<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>Navo Portable Library: 双向环形链表</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body onload='searchBox.OnSelectItem(0);'>
<!-- 制作者 Doxygen 1.7.3 -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
--></script>
<div id="top">
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td style="padding-left: 0.5em;">
   <div id="projectname">Navo Portable Library&#160;<span id="projectnumber">Ver 1.0.20120827</span></div>
   <div id="projectbrief">Provides generic platform independent facilities.</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>首页</span></a></li>
      <li><a href="modules.html"><span>模块</span></a></li>
      <li><a href="annotated.html"><span>数据结构</span></a></li>
      <li><a href="files.html"><span>文件</span></a></li>
      <li id="searchli">
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="搜索" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
</div>
<div class="header">
  <div class="summary">
<a href="#nested-classes">数据结构</a> &#124;
<a href="#define-members">宏定义</a> &#124;
<a href="#typedef-members">类型定义</a> &#124;
<a href="#func-members">函数</a>  </div>
  <div class="headertitle">
<h1>双向环形链表</h1>  </div>
<div class="ingroups"><a class="el" href="group___xE9_x93_xBE_xE5_xBC_x8F_xE8_xA1_xA8.html">链式表</a></div></div>
<div class="contents">
<table class="memberdecls">
<tr><td colspan="2"><h2><a name="nested-classes"></a>
数据结构</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct____dclnk__node.html">__dclnk_node</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">双向环形链表节点  <a href="struct____dclnk__node.html#_details">更多...</a><br/></td></tr>
<tr><td colspan="2"><h2><a name="define-members"></a>
宏定义</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga2ac679bd075153564b01c94efc019796">DCLNK_HEAD</a>(name)&#160;&#160;&#160;<a class="el" href="struct____dclnk__node.html">dclnk_head</a> name = {&amp;(name), &amp;(name)}</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">定义一个名为name的表头，并对其初始化  <a href="#ga2ac679bd075153564b01c94efc019796"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gaf9fed193ae8d815185d003de2f3adead">DCLNK_NODE</a>(name)&#160;&#160;&#160;<a class="el" href="struct____dclnk__node.html">dclnk_node</a> name = {&amp;(name), &amp;(name)}</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">定义一个名为name的节点，并对其初始化  <a href="#gaf9fed193ae8d815185d003de2f3adead"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gae0ab4ea2cbb7df4060cfabfefa025ab6"></a><!-- doxytag: member="双向环形链表::DCLNK_CHECK_PASS" ref="gae0ab4ea2cbb7df4060cfabfefa025ab6" args="" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>DCLNK_CHECK_PASS</b>&#160;&#160;&#160;0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga8a288298b8bc197f66612b2dc0e1b48e"></a><!-- doxytag: member="双向环形链表::DCLNK_CHECK_LOOP" ref="ga8a288298b8bc197f66612b2dc0e1b48e" args="" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>DCLNK_CHECK_LOOP</b>&#160;&#160;&#160;1</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gad79ea8af1c97593e658dec64734fc1b5"></a><!-- doxytag: member="双向环形链表::DCLNK_CHECK_NULL" ref="gad79ea8af1c97593e658dec64734fc1b5" args="" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>DCLNK_CHECK_NULL</b>&#160;&#160;&#160;2</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gafa7547d1b1d83ddfceca5d4b463a830d"></a><!-- doxytag: member="双向环形链表::DCLNK_CHECK_LINK" ref="gafa7547d1b1d83ddfceca5d4b463a830d" args="" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>DCLNK_CHECK_LINK</b>&#160;&#160;&#160;3</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaea2c7c56280acea09dafcba1aba02bb5"></a><!-- doxytag: member="双向环形链表::dclnk_inc" ref="gaea2c7c56280acea09dafcba1aba02bb5" args="(itr)" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gaea2c7c56280acea09dafcba1aba02bb5">dclnk_inc</a>(itr)&#160;&#160;&#160;((itr) = (itr)-&gt;next)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">迭代器递增 <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaedd9b66da5685e28f99eeaecc34d3c8c"></a><!-- doxytag: member="双向环形链表::dclnk_dec" ref="gaedd9b66da5685e28f99eeaecc34d3c8c" args="(itr)" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gaedd9b66da5685e28f99eeaecc34d3c8c">dclnk_dec</a>(itr)&#160;&#160;&#160;((itr) = (itr)-&gt;prev)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">迭代器递减 <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga098729f5dc47317dc9c20a257f2420a6"></a><!-- doxytag: member="双向环形链表::dclnk_inc_later" ref="ga098729f5dc47317dc9c20a257f2420a6" args="(itr)" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga098729f5dc47317dc9c20a257f2420a6">dclnk_inc_later</a>(itr)&#160;&#160;&#160;__dclnk_inc_later(itr, &amp;(itr))</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">迭代器后自增 <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga6f85ce98aaca29c277b1eff0b69f8207"></a><!-- doxytag: member="双向环形链表::dclnk_dec_later" ref="ga6f85ce98aaca29c277b1eff0b69f8207" args="(itr)" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga6f85ce98aaca29c277b1eff0b69f8207">dclnk_dec_later</a>(itr)&#160;&#160;&#160;__dclnk_dec_later(itr, &amp;(itr))</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">迭代器后自减 <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gaa7e5b16b5001b0eded03230bb177dc72">dclnk_foreach</a>(_begin, _end, fn, type, member)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">正向遍历_begin到_end的节点，并为每一个节点调用回调函数或宏  <a href="#gaa7e5b16b5001b0eded03230bb177dc72"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gac2f2e83ed209c8b3a0e72c9f1bc0badb">dclnk_reverse_foreach</a>(_rbegin, _rend, fn, type, member)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">逆向遍历_begin到_end的节点，并为每一个节点调用回调函数或宏  <a href="#gac2f2e83ed209c8b3a0e72c9f1bc0badb"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gada320f937c58069234344b73d25fa548">dclnk_search</a>(head, _begin, _end, equal, var, res, type, member)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">顺序查找区域内的指定节点  <a href="#gada320f937c58069234344b73d25fa548"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gadc0e328a4ae2283c8804107510b8b494">dclnk_vpush</a>(head, itr)&#160;&#160;&#160;dclnk_push_front(head, dclnk_inc_later(itr))</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">入栈反转  <a href="#gadc0e328a4ae2283c8804107510b8b494"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga4c8e23b2ed6f6855d4c43b02c0036e12">dclnk_serialize</a>(head, buf, type, member)&#160;&#160;&#160;__dclnk_serialize(head, (char**)(buf), offset_of(type, member))</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">表的序列化  <a href="#ga4c8e23b2ed6f6855d4c43b02c0036e12"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gae8cc4e2839f2cef62d6fb8925f271308">dclnk_deserialize</a>(head, buf, cnt, type, member)&#160;&#160;&#160;__dclnk_deserialize(head, (char**)(buf), cnt, offset_of(type, member))</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">表的反序列化  <a href="#gae8cc4e2839f2cef62d6fb8925f271308"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga80a398d1d1e86c1794a2eb5f82ed2a71">dclnk_sort_insert</a>(head, newly, greater_equal, type, member)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">按升序插入新节点  <a href="#ga80a398d1d1e86c1794a2eb5f82ed2a71"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga2c82cc2f6f97b84452c5c3a2fab2e8db">dclnk_is_sorted</a>(_begin, _end, greater_equal, res, type, member)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">判断表是否按序  <a href="#ga2c82cc2f6f97b84452c5c3a2fab2e8db"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gacbcd3f2e98eab443214b8360d76b8867">dclnk_bubble_sort</a>(_begin, _end, greater, type, member)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">对表进行冒泡排序  <a href="#gacbcd3f2e98eab443214b8360d76b8867"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gaabc1f7a36fcd57b49548b0e624c0d456">dclnk_oddeven_sort</a>(_begin, _end, greater, type, member)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">对表进行奇偶排序  <a href="#gaabc1f7a36fcd57b49548b0e624c0d456"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><b>__dclnk_oddeven_scan</b>(greater, type, member, _start)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga90d6f33948cddcf1d4c0f9337f1337a3">dclnk_cocktail_sort</a>(_begin, _end, greater, type, member)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">对表进行鸡尾酒排序  <a href="#ga90d6f33948cddcf1d4c0f9337f1337a3"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gaa160913519a021ded8188af193538b99">dclnk_select_sort</a>(_begin, _end, greater, type, member)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">对表进行选择排序  <a href="#gaa160913519a021ded8188af193538b99"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga42b0a616f4ea695e408ec026c0e5aa66">dclnk_insert_sort</a>(_begin, _end, greater_equal, type, member)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">对表进行插入排序  <a href="#ga42b0a616f4ea695e408ec026c0e5aa66"></a><br/></td></tr>
<tr><td colspan="2"><h2><a name="typedef-members"></a>
类型定义</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga8b3c7d9077f85a9627a2c316fdc714a4"></a><!-- doxytag: member="双向环形链表::dclnk_node" ref="ga8b3c7d9077f85a9627a2c316fdc714a4" args="" -->
typedef struct <a class="el" href="struct____dclnk__node.html">__dclnk_node</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga8b3c7d9077f85a9627a2c316fdc714a4">dclnk_node</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">节点 <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga2f086cf3698843abcfd4e5443ba871cb"></a><!-- doxytag: member="双向环形链表::dclnk_head" ref="ga2f086cf3698843abcfd4e5443ba871cb" args="" -->
typedef struct <a class="el" href="struct____dclnk__node.html">__dclnk_node</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga2f086cf3698843abcfd4e5443ba871cb">dclnk_head</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">表头 <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga86953fe272bdfdf279a801822e8c681f"></a><!-- doxytag: member="双向环形链表::dclnk_iter" ref="ga86953fe272bdfdf279a801822e8c681f" args="" -->
typedef struct <a class="el" href="struct____dclnk__node.html">__dclnk_node</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga86953fe272bdfdf279a801822e8c681f">dclnk_iter</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">迭代器 <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga432620df92f8f8be4ac3682ae48f63bf"></a><!-- doxytag: member="双向环形链表::dclnk_pr1" ref="ga432620df92f8f8be4ac3682ae48f63bf" args=")(dclnk_node *)" -->
typedef int(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga432620df92f8f8be4ac3682ae48f63bf">dclnk_pr1</a> )(<a class="el" href="struct____dclnk__node.html">dclnk_node</a> *)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">单参数回调函数指针 <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga505b299d4cb77893f37a34949dda12b3"></a><!-- doxytag: member="双向环形链表::dclnk_pr2" ref="ga505b299d4cb77893f37a34949dda12b3" args=")(dclnk_node *, dclnk_node *)" -->
typedef int(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga505b299d4cb77893f37a34949dda12b3">dclnk_pr2</a> )(<a class="el" href="struct____dclnk__node.html">dclnk_node</a> *, <a class="el" href="struct____dclnk__node.html">dclnk_node</a> *)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">双参数回调函数指针 <br/></td></tr>
<tr><td colspan="2"><h2><a name="func-members"></a>
函数</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">NV_API int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gad1423b930d6c464d2ac3bb12544bc27d">dclnk_check</a> (<a class="el" href="struct____dclnk__node.html">dclnk_head</a> *head, <a class="el" href="struct____dclnk__node.html">dclnk_iter</a> *loop_entry)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">判断链表结构是否正常  <a href="#gad1423b930d6c464d2ac3bb12544bc27d"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gae9455cefe1552511a331da823887dfaa">dclnk_init</a> (<a class="el" href="struct____dclnk__node.html">dclnk_head</a> *head)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">初始化表头  <a href="#gae9455cefe1552511a331da823887dfaa"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gabacadadbd8582d69f3f20863b08f6328">dclnk_empty</a> (<a class="el" href="struct____dclnk__node.html">dclnk_head</a> *head)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">判断表是否为空  <a href="#gabacadadbd8582d69f3f20863b08f6328"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gab96e5ee647b93b43043cf56bcbd7496b"></a><!-- doxytag: member="双向环形链表::__dclnk_singular" ref="gab96e5ee647b93b43043cf56bcbd7496b" args="(dclnk_node *front, dclnk_node *end)" -->
static int&#160;</td><td class="memItemRight" valign="bottom"><b>__dclnk_singular</b> (<a class="el" href="struct____dclnk__node.html">dclnk_node</a> *front, <a class="el" href="struct____dclnk__node.html">dclnk_node</a> *end)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gaced72da34e1eab3d113981450be479e0">dclnk_singular</a> (<a class="el" href="struct____dclnk__node.html">dclnk_head</a> *head)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">判断表是否只有单个节点  <a href="#gaced72da34e1eab3d113981450be479e0"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga625abc40f57fd4e8c00e9b64fa095435">dclnk_sortable</a> (<a class="el" href="struct____dclnk__node.html">dclnk_iter</a> begin, <a class="el" href="struct____dclnk__node.html">dclnk_iter</a> end)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">判断表是否可以排序  <a href="#ga625abc40f57fd4e8c00e9b64fa095435"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga377d3abdd5a7deaf0ba75ddd6391a908">dclnk_serialable</a> (<a class="el" href="struct____dclnk__node.html">dclnk_head</a> *head)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">判断表是否可以序列化  <a href="#ga377d3abdd5a7deaf0ba75ddd6391a908"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga4ad181b1f8cf42e5e3ff3e9c623f22fc">dclnk_link</a> (<a class="el" href="struct____dclnk__node.html">dclnk_iter</a> prev, <a class="el" href="struct____dclnk__node.html">dclnk_iter</a> next)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">链接两个节点  <a href="#ga4ad181b1f8cf42e5e3ff3e9c623f22fc"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gae94eb1f1c4deac0da3205273c0efdad1">dclnk_insert_between</a> (<a class="el" href="struct____dclnk__node.html">dclnk_node</a> *newly, <a class="el" href="struct____dclnk__node.html">dclnk_iter</a> prev, <a class="el" href="struct____dclnk__node.html">dclnk_iter</a> next)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">在两个节点之间插入一个新节点  <a href="#gae94eb1f1c4deac0da3205273c0efdad1"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga3aec4f68e74e315887a21a81787866ec">dclnk_insert</a> (<a class="el" href="struct____dclnk__node.html">dclnk_iter</a> pos, <a class="el" href="struct____dclnk__node.html">dclnk_node</a> *newly)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">插入节点到指定位置  <a href="#ga3aec4f68e74e315887a21a81787866ec"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga54290e7f005a3a8aa376af933aff5c15">dclnk_erase</a> (<a class="el" href="struct____dclnk__node.html">dclnk_iter</a> entry)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">擦除节点  <a href="#ga54290e7f005a3a8aa376af933aff5c15"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga9f338b5b1e386c5d87af043a314ce972"></a><!-- doxytag: member="双向环形链表::__dclnk_free" ref="ga9f338b5b1e386c5d87af043a314ce972" args="(dclnk_iter begin, dclnk_iter end, dclnk_pr1 erase_handler)" -->
NV_API void&#160;</td><td class="memItemRight" valign="bottom"><b>__dclnk_free</b> (<a class="el" href="struct____dclnk__node.html">dclnk_iter</a> begin, <a class="el" href="struct____dclnk__node.html">dclnk_iter</a> end, <a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga432620df92f8f8be4ac3682ae48f63bf">dclnk_pr1</a> erase_handler)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga78e459a9830ebf4f94244c5f86f64007">dclnk_erases</a> (<a class="el" href="struct____dclnk__node.html">dclnk_iter</a> begin, <a class="el" href="struct____dclnk__node.html">dclnk_iter</a> end, <a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga432620df92f8f8be4ac3682ae48f63bf">dclnk_pr1</a> erase_handler)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">清空区域  <a href="#ga78e459a9830ebf4f94244c5f86f64007"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gae5307c1791a409caa2dca5336269c0ae">dclnk_clear</a> (<a class="el" href="struct____dclnk__node.html">dclnk_head</a> *head, <a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga432620df92f8f8be4ac3682ae48f63bf">dclnk_pr1</a> erase_handler)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">清空表  <a href="#gae5307c1791a409caa2dca5336269c0ae"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gafac002b8ed02d7bc5d0a65343885a6b6">dclnk_push_front</a> (<a class="el" href="struct____dclnk__node.html">dclnk_head</a> *head, <a class="el" href="struct____dclnk__node.html">dclnk_node</a> *newly)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">在表首添加节点  <a href="#gafac002b8ed02d7bc5d0a65343885a6b6"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga53f3bb8691c7fed9ae0ad8c00d2f16a5">dclnk_push_back</a> (<a class="el" href="struct____dclnk__node.html">dclnk_head</a> *head, <a class="el" href="struct____dclnk__node.html">dclnk_node</a> *newly)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">在表尾添加节点  <a href="#ga53f3bb8691c7fed9ae0ad8c00d2f16a5"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gaadc0edbfff468d99bf4def46b9199ba6">dclnk_pop_front</a> (<a class="el" href="struct____dclnk__node.html">dclnk_head</a> *head)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">移除表首节点  <a href="#gaadc0edbfff468d99bf4def46b9199ba6"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gafb39540ec6ad4ace0a4d62d415c85a19">dclnk_pop_back</a> (<a class="el" href="struct____dclnk__node.html">dclnk_head</a> *head)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">移除表尾节点  <a href="#gafb39540ec6ad4ace0a4d62d415c85a19"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga75733d92e80fbfc79f4fc56f0b124c4e">dclnk_splice_between</a> (<a class="el" href="struct____dclnk__node.html">dclnk_iter</a> prev, <a class="el" href="struct____dclnk__node.html">dclnk_iter</a> next, <a class="el" href="struct____dclnk__node.html">dclnk_iter</a> first_prev, <a class="el" href="struct____dclnk__node.html">dclnk_iter</a> first, <a class="el" href="struct____dclnk__node.html">dclnk_iter</a> last, <a class="el" href="struct____dclnk__node.html">dclnk_iter</a> last_next)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">在两个节点之间插入多个连续节点  <a href="#ga75733d92e80fbfc79f4fc56f0b124c4e"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gada26a43a4037c0a216fdf79c83cd2baf">dclnk_splice</a> (<a class="el" href="struct____dclnk__node.html">dclnk_iter</a> pos, <a class="el" href="struct____dclnk__node.html">dclnk_iter</a> first, <a class="el" href="struct____dclnk__node.html">dclnk_iter</a> last)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">在两个节点之间插入多个连续节点  <a href="#gada26a43a4037c0a216fdf79c83cd2baf"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">NV_API size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gaa4d3dc1196aa9fe3c0c044503323ac15">dclnk_count</a> (<a class="el" href="struct____dclnk__node.html">dclnk_head</a> *head)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">统计表的节点数量  <a href="#gaa4d3dc1196aa9fe3c0c044503323ac15"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">NV_API size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga0de88342e30ab0e6a95b648f641c82c1">dclnk_distance</a> (<a class="el" href="struct____dclnk__node.html">dclnk_iter</a> first, <a class="el" href="struct____dclnk__node.html">dclnk_iter</a> last)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">计算两个节点的迭代距离  <a href="#ga0de88342e30ab0e6a95b648f641c82c1"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">NV_API <a class="el" href="struct____dclnk__node.html">dclnk_iter</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga221a07d76e225d9f30e664bd95a5fcd8">dclnk_advance</a> (<a class="el" href="struct____dclnk__node.html">dclnk_head</a> *head, <a class="el" href="struct____dclnk__node.html">dclnk_iter</a> cur, int dist)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">给迭代器增加一段距离或减小一段距离  <a href="#ga221a07d76e225d9f30e664bd95a5fcd8"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="struct____dclnk__node.html">dclnk_iter</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gad47975ec126fcb95e697450d8f83d1b7">dclnk_at</a> (<a class="el" href="struct____dclnk__node.html">dclnk_head</a> *head, const size_t index)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">根据正向索引得到迭代器  <a href="#gad47975ec126fcb95e697450d8f83d1b7"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="struct____dclnk__node.html">dclnk_iter</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga5f7f38b76e8bac973050370a0344c84c">dclnk_reverse_at</a> (<a class="el" href="struct____dclnk__node.html">dclnk_head</a> *head, const size_t index)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">根据逆向索引得到迭代器  <a href="#ga5f7f38b76e8bac973050370a0344c84c"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">NV_API size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gaf73d46da1ca836dfd1a708f5c35122bc">dclnk_index_of</a> (<a class="el" href="struct____dclnk__node.html">dclnk_head</a> *head, <a class="el" href="struct____dclnk__node.html">dclnk_iter</a> itr)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">计算迭代器的正向索引  <a href="#gaf73d46da1ca836dfd1a708f5c35122bc"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">NV_API size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gaf54726f41db556629a3c54dcede5a9f2">dclnk_reverse_index_of</a> (<a class="el" href="struct____dclnk__node.html">dclnk_head</a> *head, <a class="el" href="struct____dclnk__node.html">dclnk_iter</a> itr)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">计算迭代器的逆向索引  <a href="#gaf54726f41db556629a3c54dcede5a9f2"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga3c3c7474d2f624c8dc7bcc7925d60a87">dclnk_node_init</a> (<a class="el" href="struct____dclnk__node.html">dclnk_node</a> *entry)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">初始化节点  <a href="#ga3c3c7474d2f624c8dc7bcc7925d60a87"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga077ff3ad59d6bfea0fade064d318480c">dclnk_iter_replace</a> (<a class="el" href="struct____dclnk__node.html">dclnk_node</a> *victim, <a class="el" href="struct____dclnk__node.html">dclnk_node</a> *newly)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">用新节点替换目标节点  <a href="#ga077ff3ad59d6bfea0fade064d318480c"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gafda8f2b6863b6ac0b9de0df281cf13fd"></a><!-- doxytag: member="双向环形链表::__dclnk_iter_swap" ref="gafda8f2b6863b6ac0b9de0df281cf13fd" args="(dclnk_iter aprev, dclnk_iter a, dclnk_iter anext, dclnk_iter bprev, dclnk_iter b, dclnk_iter bnext)" -->
NV_API void&#160;</td><td class="memItemRight" valign="bottom"><b>__dclnk_iter_swap</b> (<a class="el" href="struct____dclnk__node.html">dclnk_iter</a> aprev, <a class="el" href="struct____dclnk__node.html">dclnk_iter</a> a, <a class="el" href="struct____dclnk__node.html">dclnk_iter</a> anext, <a class="el" href="struct____dclnk__node.html">dclnk_iter</a> bprev, <a class="el" href="struct____dclnk__node.html">dclnk_iter</a> b, <a class="el" href="struct____dclnk__node.html">dclnk_iter</a> bnext)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga1b46f8add85b96289a18c71c67ad9c29">dclnk_iter_swap</a> (<a class="el" href="struct____dclnk__node.html">dclnk_iter</a> a, <a class="el" href="struct____dclnk__node.html">dclnk_iter</a> b)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">交换两个节点  <a href="#ga1b46f8add85b96289a18c71c67ad9c29"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga2753cb5c697b104f8c0c53b0fb6bf44d">dclnk_replace</a> (<a class="el" href="struct____dclnk__node.html">dclnk_head</a> *victim, <a class="el" href="struct____dclnk__node.html">dclnk_head</a> *newly)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">用新表头替换目标表头  <a href="#ga2753cb5c697b104f8c0c53b0fb6bf44d"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaf0737a8e251ca526f6d3461a1621951e"></a><!-- doxytag: member="双向环形链表::__dclnk_swap" ref="gaf0737a8e251ca526f6d3461a1621951e" args="(dclnk_iter aback, dclnk_iter a, dclnk_iter afront, dclnk_iter bback, dclnk_iter b, dclnk_iter bfront)" -->
static void&#160;</td><td class="memItemRight" valign="bottom"><b>__dclnk_swap</b> (<a class="el" href="struct____dclnk__node.html">dclnk_iter</a> aback, <a class="el" href="struct____dclnk__node.html">dclnk_iter</a> a, <a class="el" href="struct____dclnk__node.html">dclnk_iter</a> afront, <a class="el" href="struct____dclnk__node.html">dclnk_iter</a> bback, <a class="el" href="struct____dclnk__node.html">dclnk_iter</a> b, <a class="el" href="struct____dclnk__node.html">dclnk_iter</a> bfront)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga655dec9de6ff78ba650545f4fd0cf25c">dclnk_swap</a> (<a class="el" href="struct____dclnk__node.html">dclnk_head</a> *a, <a class="el" href="struct____dclnk__node.html">dclnk_head</a> *b)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">交换两个表头  <a href="#ga655dec9de6ff78ba650545f4fd0cf25c"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gad846825e029928eb6175a9950e9c2835">dclnk_exist</a> (<a class="el" href="struct____dclnk__node.html">dclnk_head</a> *head, <a class="el" href="struct____dclnk__node.html">dclnk_iter</a> itr)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">判断一个节点是否存在于表中  <a href="#gad846825e029928eb6175a9950e9c2835"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="struct____dclnk__node.html">dclnk_iter</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gaa4ddc5dca3168a9e3b3988ae7c907ae6">dclnk_front</a> (<a class="el" href="struct____dclnk__node.html">dclnk_head</a> *head)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">得到表首节点  <a href="#gaa4ddc5dca3168a9e3b3988ae7c907ae6"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="struct____dclnk__node.html">dclnk_iter</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga64297f541720c79ce293bfee872c4e55">dclnk_back</a> (<a class="el" href="struct____dclnk__node.html">dclnk_head</a> *head)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">得到表尾节点  <a href="#ga64297f541720c79ce293bfee872c4e55"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="struct____dclnk__node.html">dclnk_iter</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga775a15538846de23d715ba0bf3afa3a5">dclnk_begin</a> (<a class="el" href="struct____dclnk__node.html">dclnk_head</a> *head)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">得到指向正向起始位置的迭代器  <a href="#ga775a15538846de23d715ba0bf3afa3a5"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="struct____dclnk__node.html">dclnk_iter</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga7ba5dcacaa98db4d65f82ac7892513f0">dclnk_end</a> (<a class="el" href="struct____dclnk__node.html">dclnk_head</a> *head)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">得到指向正向终止位置的迭代器  <a href="#ga7ba5dcacaa98db4d65f82ac7892513f0"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="struct____dclnk__node.html">dclnk_iter</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga9c6a5a5d5c387591c119756e21479e86">dclnk_end_of</a> (<a class="el" href="struct____dclnk__node.html">dclnk_iter</a> itr)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">得到当前迭代器的正向终止位置  <a href="#ga9c6a5a5d5c387591c119756e21479e86"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="struct____dclnk__node.html">dclnk_iter</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga2ec16ec1678a27ac0b87166c3ab10288">dclnk_rbegin</a> (<a class="el" href="struct____dclnk__node.html">dclnk_head</a> *head)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">得到指向逆向起始位置的迭代器  <a href="#ga2ec16ec1678a27ac0b87166c3ab10288"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="struct____dclnk__node.html">dclnk_iter</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga42269157f5db93f73fd5eeb42d34d1d9">dclnk_rend</a> (<a class="el" href="struct____dclnk__node.html">dclnk_head</a> *head)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">得到指向逆向终止位置的迭代器  <a href="#ga42269157f5db93f73fd5eeb42d34d1d9"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="struct____dclnk__node.html">dclnk_iter</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga2cc91af5ec84d64b019be9c0023c2aa8">dclnk_rend_of</a> (<a class="el" href="struct____dclnk__node.html">dclnk_iter</a> itr)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">得到当前迭代器的逆向终止位置  <a href="#ga2cc91af5ec84d64b019be9c0023c2aa8"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="struct____dclnk__node.html">dclnk_iter</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga5699b2d9bb2082637b80d7ee473bd00e">dclnk_next</a> (<a class="el" href="struct____dclnk__node.html">dclnk_iter</a> itr)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">得到当前节点的后继节点  <a href="#ga5699b2d9bb2082637b80d7ee473bd00e"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="struct____dclnk__node.html">dclnk_iter</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gac9747211a6b24a7c38fd92f43f35ad0d">dclnk_prev</a> (<a class="el" href="struct____dclnk__node.html">dclnk_iter</a> itr)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">得到当前节点的前驱节点  <a href="#gac9747211a6b24a7c38fd92f43f35ad0d"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaa1acdd0afbf94c3b21006219cd245893"></a><!-- doxytag: member="双向环形链表::__dclnk_inc_later" ref="gaa1acdd0afbf94c3b21006219cd245893" args="(dclnk_iter cur, dclnk_iter *p)" -->
static <a class="el" href="struct____dclnk__node.html">dclnk_iter</a>&#160;</td><td class="memItemRight" valign="bottom"><b>__dclnk_inc_later</b> (<a class="el" href="struct____dclnk__node.html">dclnk_iter</a> cur, <a class="el" href="struct____dclnk__node.html">dclnk_iter</a> *p)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga407f0034deb4bd92ee841dcebd6fbaa2"></a><!-- doxytag: member="双向环形链表::__dclnk_dec_later" ref="ga407f0034deb4bd92ee841dcebd6fbaa2" args="(dclnk_iter cur, dclnk_iter *p)" -->
static <a class="el" href="struct____dclnk__node.html">dclnk_iter</a>&#160;</td><td class="memItemRight" valign="bottom"><b>__dclnk_dec_later</b> (<a class="el" href="struct____dclnk__node.html">dclnk_iter</a> cur, <a class="el" href="struct____dclnk__node.html">dclnk_iter</a> *p)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga1ce9559f592b786348eaea0fcca10bb3"></a><!-- doxytag: member="双向环形链表::__dclnk_vbegin" ref="ga1ce9559f592b786348eaea0fcca10bb3" args="(dclnk_head *head, dclnk_iter front)" -->
static <a class="el" href="struct____dclnk__node.html">dclnk_iter</a>&#160;</td><td class="memItemRight" valign="bottom"><b>__dclnk_vbegin</b> (<a class="el" href="struct____dclnk__node.html">dclnk_head</a> *head, <a class="el" href="struct____dclnk__node.html">dclnk_iter</a> front)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="struct____dclnk__node.html">dclnk_iter</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga310d89f0377a31ddfec420f54ed43ea1">dclnk_vbegin</a> (<a class="el" href="struct____dclnk__node.html">dclnk_head</a> *head)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">得到用于反转的起始位置的迭代器  <a href="#ga310d89f0377a31ddfec420f54ed43ea1"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="struct____dclnk__node.html">dclnk_iter</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga7e058f07e0740f7f810abe5305472a02">dclnk_vend</a> (<a class="el" href="struct____dclnk__node.html">dclnk_head</a> *head)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">得到用于反转的终止位置的迭代器  <a href="#ga7e058f07e0740f7f810abe5305472a02"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">NV_API void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gadffbb5e0d816b360d559414d9f96f5cf">dclnk_reverse</a> (<a class="el" href="struct____dclnk__node.html">dclnk_head</a> *head)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">反转表  <a href="#gadffbb5e0d816b360d559414d9f96f5cf"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga3fa8da0f4652fd9a786522aad5278de5"></a><!-- doxytag: member="双向环形链表::__dclnk_serialize" ref="ga3fa8da0f4652fd9a786522aad5278de5" args="(dclnk_head *head, char **buf, const size_t offset)" -->
NV_API void&#160;</td><td class="memItemRight" valign="bottom"><b>__dclnk_serialize</b> (<a class="el" href="struct____dclnk__node.html">dclnk_head</a> *head, char **buf, const size_t offset)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga77dc2482315d4fb09f5ea515c1aca78a"></a><!-- doxytag: member="双向环形链表::__dclnk_deserialize" ref="ga77dc2482315d4fb09f5ea515c1aca78a" args="(dclnk_head *head, char **buf, size_t cnt, const size_t offset)" -->
NV_API void&#160;</td><td class="memItemRight" valign="bottom"><b>__dclnk_deserialize</b> (<a class="el" href="struct____dclnk__node.html">dclnk_head</a> *head, char **buf, size_t cnt, const size_t offset)</td></tr>
</table>
<hr/><h2>宏定义文档</h2>
<a class="anchor" id="ga2ac679bd075153564b01c94efc019796"></a><!-- doxytag: member="dclnk.h::DCLNK_HEAD" ref="ga2ac679bd075153564b01c94efc019796" args="(name)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define DCLNK_HEAD</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">name</td><td>)</td>
          <td>&#160;&#160;&#160;<a class="el" href="struct____dclnk__node.html">dclnk_head</a> name = {&amp;(name), &amp;(name)}</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>定义一个名为name的表头，并对其初始化 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">name</td><td>表头名称 </td></tr>
  </table>
  </dd>
</dl>

<p>在文件<a class="el" href="dclnk_8h_source.html">dclnk.h</a>第<a class="el" href="dclnk_8h_source.html#l00055">55</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gaf9fed193ae8d815185d003de2f3adead"></a><!-- doxytag: member="dclnk.h::DCLNK_NODE" ref="gaf9fed193ae8d815185d003de2f3adead" args="(name)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define DCLNK_NODE</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">name</td><td>)</td>
          <td>&#160;&#160;&#160;<a class="el" href="struct____dclnk__node.html">dclnk_node</a> name = {&amp;(name), &amp;(name)}</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>定义一个名为name的节点，并对其初始化 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">name</td><td>节点名称 </td></tr>
  </table>
  </dd>
</dl>

<p>在文件<a class="el" href="dclnk_8h_source.html">dclnk.h</a>第<a class="el" href="dclnk_8h_source.html#l00056">56</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gaa7e5b16b5001b0eded03230bb177dc72"></a><!-- doxytag: member="dclnk.h::dclnk_foreach" ref="gaa7e5b16b5001b0eded03230bb177dc72" args="(_begin, _end, fn, type, member)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dclnk_foreach</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">_begin, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">_end, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">fn, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">member&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {        \
        <a class="code" href="struct____dclnk__node.html" title="双向环形链表节点">dclnk_iter</a> _q_e = (_end);                               \
        <a class="code" href="struct____dclnk__node.html" title="双向环形链表节点">dclnk_iter</a> _q_f = (_begin);                             \
        <span class="keywordflow">while</span> (_q_f != _q_e) {                                  \
            type * _q_t = container_of(_q_f, type, member);     \
            _q_f = _q_f-&gt;<a class="code" href="struct____dclnk__node.html#a7fd3e4e933fc09c588ab28b651e471c0" title="后继节点">next</a>;                                  \
            fn(_q_t);                                           \
        }                                                       \
    } <span class="keywordflow">while</span> (0)
</pre></div>
<p>正向遍历_begin到_end的节点，并为每一个节点调用回调函数或宏 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">_begin</td><td>起始位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">_end</td><td>终止位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">fn</td><td>回调函数或宏 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>拥有者类型 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">member</td><td>所在成员名 </td></tr>
  </table>
  </dd>
</dl>

<p>在文件<a class="el" href="dclnk_8h_source.html">dclnk.h</a>第<a class="el" href="dclnk_8h_source.html#l00781">781</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gac2f2e83ed209c8b3a0e72c9f1bc0badb"></a><!-- doxytag: member="dclnk.h::dclnk_reverse_foreach" ref="gac2f2e83ed209c8b3a0e72c9f1bc0badb" args="(_rbegin, _rend, fn, type, member)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dclnk_reverse_foreach</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">_rbegin, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">_rend, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">fn, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">member&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {<a class="code" href="struct____dclnk__node.html" title="双向环形链表节点">dclnk_iter</a> _q_e = (_rend);                              \
        <a class="code" href="struct____dclnk__node.html" title="双向环形链表节点">dclnk_iter</a> _q_f = (_rbegin);                            \
        <span class="keywordflow">while</span> (_q_f != _q_e) {                                  \
            type * _q_t = container_of(_q_f, type, member);     \
            _q_f = _q_f-&gt;<a class="code" href="struct____dclnk__node.html#ad6444cb695c4b196b886298f9e21cc10" title="前驱节点">prev</a>;                                  \
            fn(_q_t);                                           \
        }                                                       \
    } <span class="keywordflow">while</span> (0)
</pre></div>
<p>逆向遍历_begin到_end的节点，并为每一个节点调用回调函数或宏 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">_rbegin</td><td>逆向起始位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">_rend</td><td>逆向终止位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">fn</td><td>回调函数或宏 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>拥有者类型 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">member</td><td>所在成员名 </td></tr>
  </table>
  </dd>
</dl>

<p>在文件<a class="el" href="dclnk_8h_source.html">dclnk.h</a>第<a class="el" href="dclnk_8h_source.html#l00800">800</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gada320f937c58069234344b73d25fa548"></a><!-- doxytag: member="dclnk.h::dclnk_search" ref="gada320f937c58069234344b73d25fa548" args="(head, _begin, _end, equal, var, res, type, member)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dclnk_search</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">head, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">_begin, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">_end, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">equal, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">var, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">res, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">member&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {<a class="code" href="struct____dclnk__node.html" title="双向环形链表节点">dclnk_iter</a> _q_e = (_end);                               \
        <a class="code" href="struct____dclnk__node.html" title="双向环形链表节点">dclnk_iter</a> _q_f = (_begin);                             \
        <a class="code" href="struct____dclnk__node.html" title="双向环形链表节点">dclnk_head</a>* _q_h = (head);                              \
        (res) = NULL;                                           \
        <span class="keywordflow">while</span> (_q_f != _q_e) {                                  \
            type * _q_cb = container_of(_q_f, type, member);    \
            <span class="keywordflow">if</span> (unlikely(equal(_q_cb, (val)))) {                \
                (res) = _q_cb;                                  \
                <span class="keywordflow">break</span>;                                          \
            }                                                   \
            _q_f = _q_f-&gt;<a class="code" href="struct____dclnk__node.html#a7fd3e4e933fc09c588ab28b651e471c0" title="后继节点">next</a>;                                  \
        }                                                       \
    } <span class="keywordflow">while</span> (0)
</pre></div>
<p>顺序查找区域内的指定节点 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">head</td><td>表头 </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">_begin</td><td>起始位置 </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">_end</td><td>终止位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">equal</td><td>比较函数或宏。相等时返回1，不相等返回0 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">var</td><td>搜索的键值，常量，变量均可 </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">res</td><td>保存搜索结果的变量，类型是节点指针。结果为NULL表示找不到节点 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>拥有者类型 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">member</td><td>所在成员名 </td></tr>
  </table>
  </dd>
</dl>

<p>在文件<a class="el" href="dclnk_8h_source.html">dclnk.h</a>第<a class="el" href="dclnk_8h_source.html#l00822">822</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gadc0e328a4ae2283c8804107510b8b494"></a><!-- doxytag: member="dclnk.h::dclnk_vpush" ref="gadc0e328a4ae2283c8804107510b8b494" args="(head, itr)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dclnk_vpush</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">head, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">itr&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;dclnk_push_front(head, dclnk_inc_later(itr))</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>入栈反转 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">head</td><td>表头 </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">itr</td><td>迭代器 </td></tr>
  </table>
  </dd>
</dl>
<dl class="user"><dt><b>示例:</b></dt><dd><div class="fragment"><pre class="fragment">    <span class="comment">// 反转表</span>
    <a class="code" href="struct____dclnk__node.html" title="双向环形链表节点">dclnk_iter</a> ve = <a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga7e058f07e0740f7f810abe5305472a02" title="得到用于反转的终止位置的迭代器">dclnk_vend</a>(&amp;head);
    <a class="code" href="struct____dclnk__node.html" title="双向环形链表节点">dclnk_iter</a> vi = <a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga310d89f0377a31ddfec420f54ed43ea1" title="得到用于反转的起始位置的迭代器">dclnk_vbegin</a>(&amp;head);
    <span class="keywordflow">while</span> (vi != ve) {
        <a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gadc0e328a4ae2283c8804107510b8b494" title="入栈反转">dclnk_vpush</a>(&amp;head, vi);
    }
</pre></div> </dd></dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga310d89f0377a31ddfec420f54ed43ea1" title="得到用于反转的起始位置的迭代器">dclnk_vbegin</a>, <a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga7e058f07e0740f7f810abe5305472a02" title="得到用于反转的终止位置的迭代器">dclnk_vend</a>, <a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gadffbb5e0d816b360d559414d9f96f5cf" title="反转表">dclnk_reverse</a> </dd></dl>

<p>在文件<a class="el" href="dclnk_8h_source.html">dclnk.h</a>第<a class="el" href="dclnk_8h_source.html#l00913">913</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga4c8e23b2ed6f6855d4c43b02c0036e12"></a><!-- doxytag: member="dclnk.h::dclnk_serialize" ref="ga4c8e23b2ed6f6855d4c43b02c0036e12" args="(head, buf, type, member)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dclnk_serialize</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">head, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">buf, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">member&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;__dclnk_serialize(head, (char**)(buf), offset_of(type, member))</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>表的序列化 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">head</td><td>表头 </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">buf</td><td>序列缓存 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>拥有者类型 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">member</td><td>所在成员名 </td></tr>
  </table>
  </dd>
</dl>
<dl class="note"><dt><b>注解:</b></dt><dd>函数会遍历整个表，逐个将节点的拥有者地址存入缓存 </dd></dl>
<dl class="user"><dt><b>示例:</b></dt><dd><div class="fragment"><pre class="fragment">    <span class="comment">// 判断是否可以序列化</span>
    <span class="keywordflow">if</span> (<a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga377d3abdd5a7deaf0ba75ddd6391a908" title="判断表是否可以序列化">dclnk_serialable</a>(&amp;head)) {
        <a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gab7b8f6f20db0f3e5681fd2184b1ae60c" title="type类型表头">slseq_head</a>(DATA*) seq;
        <span class="comment">// 分配序列缓存</span>
        DATA** buf = (DATA**)malloc(sizeof(DATA*) * list_cnt);
        <span class="comment">// 序列化</span>
        <a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga4c8e23b2ed6f6855d4c43b02c0036e12" title="表的序列化">dclnk_serialize</a>(&amp;head, buf, DATA, node);
        <a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga08213d0c7bcf381b466b18e3822c6934" title="初始化序列">SLSEQ_INIT_SERIAL</a>(DATA*, &amp;seq, buf, list_cnt);
        <span class="comment">// 希尔排序</span>
        <a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga197b786747dc3c95744f2bf8060b36ad" title="希尔排序">slseq_shell_sort</a>(DATA*, <a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga2696503718b3292109d395da44c988b6" title="得到指向正向起始位置的迭代器">slseq_begin</a>(&amp;seq), 
            <a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga5b3212d3b18809e193c701f7c6fef755" title="得到指向正向终止位置的迭代器">slseq_end</a>(&amp;seq), DATA_Greater);
        <span class="comment">// 反序列化</span>
        <a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gae8cc4e2839f2cef62d6fb8925f271308" title="表的反序列化">dclnk_deserialize</a>(&amp;head, buf, list_cnt, DATA, node);
        <span class="comment">// 释放缓存</span>
        free(buf);
    }
</pre></div> </dd></dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gae8cc4e2839f2cef62d6fb8925f271308" title="表的反序列化">dclnk_deserialize</a>, <a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga377d3abdd5a7deaf0ba75ddd6391a908" title="判断表是否可以序列化">dclnk_serialable</a> </dd></dl>

<p>在文件<a class="el" href="dclnk_8h_source.html">dclnk.h</a>第<a class="el" href="dclnk_8h_source.html#l00958">958</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gae8cc4e2839f2cef62d6fb8925f271308"></a><!-- doxytag: member="dclnk.h::dclnk_deserialize" ref="gae8cc4e2839f2cef62d6fb8925f271308" args="(head, buf, cnt, type, member)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dclnk_deserialize</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">head, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">buf, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">cnt, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">member&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;__dclnk_deserialize(head, (char**)(buf), cnt, offset_of(type, member))</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>表的反序列化 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[out]</td><td class="paramname">head</td><td>表头 </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">buf</td><td>序列缓存 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">cnt</td><td>序列长度 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>拥有者类型 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">member</td><td>所在成员名 </td></tr>
  </table>
  </dd>
</dl>
<dl class="note"><dt><b>注解:</b></dt><dd>函数会遍历整个序列来还原整个表 </dd></dl>
<dl class="user"><dt><b>示例:</b></dt><dd><div class="fragment"><pre class="fragment">    <span class="comment">// 判断是否可以序列化</span>
    <span class="keywordflow">if</span> (<a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga377d3abdd5a7deaf0ba75ddd6391a908" title="判断表是否可以序列化">dclnk_serialable</a>(&amp;head)) {
        <a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gab7b8f6f20db0f3e5681fd2184b1ae60c" title="type类型表头">slseq_head</a>(DATA*) seq;
        <span class="comment">// 分配序列缓存</span>
        DATA** buf = (DATA**)malloc(sizeof(DATA*) * list_cnt);
        <span class="comment">// 序列化</span>
        <a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga4c8e23b2ed6f6855d4c43b02c0036e12" title="表的序列化">dclnk_serialize</a>(&amp;head, buf, DATA, node);
        <a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga08213d0c7bcf381b466b18e3822c6934" title="初始化序列">SLSEQ_INIT_SERIAL</a>(DATA*, &amp;seq, buf, list_cnt);
        <span class="comment">// 希尔排序</span>
        <a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga197b786747dc3c95744f2bf8060b36ad" title="希尔排序">slseq_shell_sort</a>(DATA*, <a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga2696503718b3292109d395da44c988b6" title="得到指向正向起始位置的迭代器">slseq_begin</a>(&amp;seq), 
            <a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga5b3212d3b18809e193c701f7c6fef755" title="得到指向正向终止位置的迭代器">slseq_end</a>(&amp;seq), DATA_Greater);
        <span class="comment">// 反序列化</span>
        <a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gae8cc4e2839f2cef62d6fb8925f271308" title="表的反序列化">dclnk_deserialize</a>(&amp;head, buf, list_cnt, DATA, node);
        <span class="comment">// 释放缓存</span>
        free(buf);
    }
</pre></div> </dd></dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga4c8e23b2ed6f6855d4c43b02c0036e12" title="表的序列化">dclnk_serialize</a>, <a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga377d3abdd5a7deaf0ba75ddd6391a908" title="判断表是否可以序列化">dclnk_serialable</a> </dd></dl>

<p>在文件<a class="el" href="dclnk_8h_source.html">dclnk.h</a>第<a class="el" href="dclnk_8h_source.html#l00991">991</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga80a398d1d1e86c1794a2eb5f82ed2a71"></a><!-- doxytag: member="dclnk.h::dclnk_sort_insert" ref="ga80a398d1d1e86c1794a2eb5f82ed2a71" args="(head, newly, greater_equal, type, member)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dclnk_sort_insert</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">head, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">newly, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">greater_equal, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">member&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {<a class="code" href="struct____dclnk__node.html" title="双向环形链表节点">dclnk_iter</a> _k_n = (newly);                              \
        <a class="code" href="struct____dclnk__node.html" title="双向环形链表节点">dclnk_head</a>* _k_h = (head);                              \
        <a class="code" href="struct____dclnk__node.html" title="双向环形链表节点">dclnk_iter</a> _k_i = _k_h-&gt;<a class="code" href="struct____dclnk__node.html#a7fd3e4e933fc09c588ab28b651e471c0" title="后继节点">next</a>;                           \
        <span class="keywordflow">while</span> (_k_i != _k_h) {                                  \
            type * _k_pi = container_of(_k_i, type, member);    \
            type * _k_pn = container_of(_k_n, type, member);    \
            <span class="keywordflow">if</span> (greater_equal(_k_pi, _k_pn))                    \
                <span class="keywordflow">break</span>;                                          \
            _k_i = _k_i-&gt;<a class="code" href="struct____dclnk__node.html#a7fd3e4e933fc09c588ab28b651e471c0" title="后继节点">next</a>;                                  \
        }                                                       \
        <a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga3aec4f68e74e315887a21a81787866ec" title="插入节点到指定位置">dclnk_insert</a>(_k_i, _k_n);                               \
    } <span class="keywordflow">while</span> (0)
</pre></div>
<p>按升序插入新节点 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">head</td><td>表头 </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">newly</td><td>新节点 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">greater_equal</td><td>比较函数或宏， 升序:((*i)-&gt;x &gt;= (*j)-&gt;x) 降序:((*i)-&gt;x &lt;= (*j)-&gt;x) </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>拥有者类型 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">member</td><td>所在成员名 </td></tr>
  </table>
  </dd>
</dl>

<p>在文件<a class="el" href="dclnk_8h_source.html">dclnk.h</a>第<a class="el" href="dclnk_8h_source.html#l01005">1005</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga2c82cc2f6f97b84452c5c3a2fab2e8db"></a><!-- doxytag: member="dclnk.h::dclnk_is_sorted" ref="ga2c82cc2f6f97b84452c5c3a2fab2e8db" args="(_begin, _end, greater_equal, res, type, member)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dclnk_is_sorted</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">_begin, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">_end, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">greater_equal, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">res, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">member&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {<a class="code" href="struct____dclnk__node.html" title="双向环形链表节点">dclnk_iter</a> _k_e = (_end);                               \
        <a class="code" href="struct____dclnk__node.html" title="双向环形链表节点">dclnk_iter</a> _k_i = (_begin);                             \
        <a class="code" href="struct____dclnk__node.html" title="双向环形链表节点">dclnk_iter</a> _k_j = _k_i-&gt;<a class="code" href="struct____dclnk__node.html#a7fd3e4e933fc09c588ab28b651e471c0" title="后继节点">next</a>;                           \
        (res) = 1;                                              \
        <span class="keywordflow">while</span> (_k_j != _k_e) {                                  \
            type * _k_pi = container_of(_k_i, type, member);    \
            type * _k_pj = container_of(_k_j, type, member);    \
            <span class="keywordflow">if</span> (!(greater_equal(_k_pj, _k_pi))) {               \
                (res) = 0;                                      \
                <span class="keywordflow">break</span>;                                          \
            }                                                   \
            _k_i = _k_j;                                        \
            _k_j = _k_j-&gt;<a class="code" href="struct____dclnk__node.html#a7fd3e4e933fc09c588ab28b651e471c0" title="后继节点">next</a>;                                  \
        }                                                       \
    } <span class="keywordflow">while</span> (0)
</pre></div>
<p>判断表是否按序 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">_begin</td><td>起始位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">_end</td><td>终止位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">greater_equal</td><td>比较函数或宏， 升序:((*i)-&gt;x &gt;= (*j)-&gt;x) 降序:((*i)-&gt;x &lt;= (*j)-&gt;x) </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">res</td><td>保存输出结果的变量 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>拥有者类型 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">member</td><td>所在成员名 </td></tr>
  </table>
  </dd>
</dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gacbcd3f2e98eab443214b8360d76b8867" title="对表进行冒泡排序">dclnk_bubble_sort</a>, <a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gaabc1f7a36fcd57b49548b0e624c0d456" title="对表进行奇偶排序">dclnk_oddeven_sort</a>, <a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gaa160913519a021ded8188af193538b99" title="对表进行选择排序">dclnk_select_sort</a>, <a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga42b0a616f4ea695e408ec026c0e5aa66" title="对表进行插入排序">dclnk_insert_sort</a>, <a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga625abc40f57fd4e8c00e9b64fa095435" title="判断表是否可以排序">dclnk_sortable</a> </dd></dl>

<p>在文件<a class="el" href="dclnk_8h_source.html">dclnk.h</a>第<a class="el" href="dclnk_8h_source.html#l01033">1033</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gacbcd3f2e98eab443214b8360d76b8867"></a><!-- doxytag: member="dclnk.h::dclnk_bubble_sort" ref="gacbcd3f2e98eab443214b8360d76b8867" args="(_begin, _end, greater, type, member)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dclnk_bubble_sort</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">_begin, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">_end, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">greater, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">member&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {    \
        <span class="keywordtype">int</span> _k_pc = 1;                                              \
        <a class="code" href="struct____dclnk__node.html" title="双向环形链表节点">dclnk_iter</a> _k_e = (_end);                                   \
        <a class="code" href="struct____dclnk__node.html" title="双向环形链表节点">dclnk_iter</a> _k_i = (_begin);                                 \
        <span class="keywordflow">for</span> (; _k_pc &amp;&amp; _k_i != _k_e; _k_i = _k_i-&gt;<a class="code" href="struct____dclnk__node.html#a7fd3e4e933fc09c588ab28b651e471c0" title="后继节点">next</a>) {          \
            <a class="code" href="struct____dclnk__node.html" title="双向环形链表节点">dclnk_iter</a> _k_j = _k_i-&gt;<a class="code" href="struct____dclnk__node.html#a7fd3e4e933fc09c588ab28b651e471c0" title="后继节点">next</a>;                           \
            <span class="keywordflow">for</span> (_k_pc = 0; _k_j != _k_e; _k_j = _k_j-&gt;<a class="code" href="struct____dclnk__node.html#a7fd3e4e933fc09c588ab28b651e471c0" title="后继节点">next</a>) {      \
                type * _k_pi = container_of(_k_i, type, member);    \
                type * _k_pj = container_of(_k_j, type, member);    \
                <span class="keywordflow">if</span> (greater(_k_pi, _k_pj)) {                        \
                    <a class="code" href="struct____dclnk__node.html" title="双向环形链表节点">dclnk_iter</a> _k_t = _k_i;                         \
                    _k_i = _k_j;                                    \
                    _k_j = _k_t;                                    \
                    <a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga1b46f8add85b96289a18c71c67ad9c29" title="交换两个节点">dclnk_iter_swap</a>(_k_i, _k_j);                    \
                    _k_pc = 1;                                      \
                }                                                   \
            }                                                       \
        }                                                           \
    } <span class="keywordflow">while</span> (0)
</pre></div>
<p>对表进行冒泡排序 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">_begin</td><td>起始位置 </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">_end</td><td>终止位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">greater</td><td>比较函数或宏 升序:((*i)-&gt;x &gt; (*j)-&gt;x) 降序:((*i)-&gt;x &lt; (*j)-&gt;x) </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>拥有者类型 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">member</td><td>所在成员名 </td></tr>
  </table>
  </dd>
</dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga625abc40f57fd4e8c00e9b64fa095435" title="判断表是否可以排序">dclnk_sortable</a>, <a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga2c82cc2f6f97b84452c5c3a2fab2e8db" title="判断表是否按序">dclnk_is_sorted</a> </dd></dl>

<p>在文件<a class="el" href="dclnk_8h_source.html">dclnk.h</a>第<a class="el" href="dclnk_8h_source.html#l01068">1068</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gaabc1f7a36fcd57b49548b0e624c0d456"></a><!-- doxytag: member="dclnk.h::dclnk_oddeven_sort" ref="gaabc1f7a36fcd57b49548b0e624c0d456" args="(_begin, _end, greater, type, member)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dclnk_oddeven_sort</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">_begin, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">_end, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">greater, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">member&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {    \
        <span class="keywordtype">int</span> _k_pc = 1;                                                  \
        <a class="code" href="struct____dclnk__node.html" title="双向环形链表节点">dclnk_iter</a> _k_e = (_end);                                       \
        <a class="code" href="struct____dclnk__node.html" title="双向环形链表节点">dclnk_iter</a> _k_f = (_begin);                                     \
        <a class="code" href="struct____dclnk__node.html" title="双向环形链表节点">dclnk_iter</a> _k_p = _k_f-&gt;<a class="code" href="struct____dclnk__node.html#ad6444cb695c4b196b886298f9e21cc10" title="前驱节点">prev</a>;                                   \
        <span class="keywordflow">while</span> (_k_pc) {                                                 \
            _k_pc = 0;                                                  \
            _k_f = _k_p-&gt;<a class="code" href="struct____dclnk__node.html#a7fd3e4e933fc09c588ab28b651e471c0" title="后继节点">next</a>;                                          \
            __dclnk_oddeven_scan(greater, type, member, _k_f);          \
            __dclnk_oddeven_scan(greater, type, member, _k_f-&gt;<a class="code" href="struct____dclnk__node.html#a7fd3e4e933fc09c588ab28b651e471c0" title="后继节点">next</a>);    \
        }                                                               \
    } <span class="keywordflow">while</span> (0)
</pre></div>
<p>对表进行奇偶排序 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">_begin</td><td>起始位置 </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">_end</td><td>终止位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">greater</td><td>比较函数或宏 升序:((*i)-&gt;x &gt; (*j)-&gt;x) 降序:((*i)-&gt;x &lt; (*j)-&gt;x) </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>拥有者类型 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">member</td><td>所在成员名 </td></tr>
  </table>
  </dd>
</dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga625abc40f57fd4e8c00e9b64fa095435" title="判断表是否可以排序">dclnk_sortable</a>, <a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga2c82cc2f6f97b84452c5c3a2fab2e8db" title="判断表是否按序">dclnk_is_sorted</a> </dd></dl>

<p>在文件<a class="el" href="dclnk_8h_source.html">dclnk.h</a>第<a class="el" href="dclnk_8h_source.html#l01100">1100</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga3621338291a3425a4e5f888463892574"></a><!-- doxytag: member="dclnk.h::__dclnk_oddeven_scan" ref="ga3621338291a3425a4e5f888463892574" args="(greater, type, member, _start)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define __dclnk_oddeven_scan</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">greater, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">member, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">_start&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {    \
        <a class="code" href="struct____dclnk__node.html" title="双向环形链表节点">dclnk_iter</a> _k_i = _start;                                   \
        <a class="code" href="struct____dclnk__node.html" title="双向环形链表节点">dclnk_iter</a> _k_j = _k_i-&gt;<a class="code" href="struct____dclnk__node.html#a7fd3e4e933fc09c588ab28b651e471c0" title="后继节点">next</a>;                               \
        <span class="keywordflow">while</span> (_k_j != _k_e &amp;&amp; _k_i != _k_e) {                      \
            type * _k_pi = container_of(_k_i, type, member);        \
            type * _k_pj = container_of(_k_j, type, member);        \
            <span class="keywordflow">if</span> (greater(_k_pi, _k_pj)) {                            \
                <a class="code" href="struct____dclnk__node.html" title="双向环形链表节点">dclnk_iter</a> _k_t = _k_i;                             \
                _k_i = _k_j;                                        \
                _k_j = _k_t;                                        \
                <a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga1b46f8add85b96289a18c71c67ad9c29" title="交换两个节点">dclnk_iter_swap</a>(_k_i, _k_j);                        \
                _k_pc = 1;                                          \
            }                                                       \
            _k_i = _k_j-&gt;<a class="code" href="struct____dclnk__node.html#a7fd3e4e933fc09c588ab28b651e471c0" title="后继节点">next</a>;                                      \
            _k_j = _k_i-&gt;<a class="code" href="struct____dclnk__node.html#a7fd3e4e933fc09c588ab28b651e471c0" title="后继节点">next</a>;                                      \
        }                                                           \
    } <span class="keywordflow">while</span> (0)
</pre></div>
<p>在文件<a class="el" href="dclnk_8h_source.html">dclnk.h</a>第<a class="el" href="dclnk_8h_source.html#l01113">1113</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga90d6f33948cddcf1d4c0f9337f1337a3"></a><!-- doxytag: member="dclnk.h::dclnk_cocktail_sort" ref="ga90d6f33948cddcf1d4c0f9337f1337a3" args="(_begin, _end, greater, type, member)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dclnk_cocktail_sort</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">_begin, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">_end, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">greater, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">member&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>对表进行鸡尾酒排序 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">_begin</td><td>起始位置 </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">_end</td><td>终止位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">greater</td><td>比较函数或宏 升序:((*i)-&gt;x &gt; (*j)-&gt;x) 降序:((*i)-&gt;x &lt; (*j)-&gt;x) </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>拥有者类型 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">member</td><td>所在成员名 </td></tr>
  </table>
  </dd>
</dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga625abc40f57fd4e8c00e9b64fa095435" title="判断表是否可以排序">dclnk_sortable</a>, <a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga2c82cc2f6f97b84452c5c3a2fab2e8db" title="判断表是否按序">dclnk_is_sorted</a> </dd></dl>

<p>在文件<a class="el" href="dclnk_8h_source.html">dclnk.h</a>第<a class="el" href="dclnk_8h_source.html#l01143">1143</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gaa160913519a021ded8188af193538b99"></a><!-- doxytag: member="dclnk.h::dclnk_select_sort" ref="gaa160913519a021ded8188af193538b99" args="(_begin, _end, greater, type, member)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dclnk_select_sort</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">_begin, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">_end, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">greater, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">member&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {    \
        <a class="code" href="struct____dclnk__node.html" title="双向环形链表节点">dclnk_iter</a> _k_e = (_end);                                   \
        <a class="code" href="struct____dclnk__node.html" title="双向环形链表节点">dclnk_iter</a> _k_i = (_begin);                                 \
        <a class="code" href="struct____dclnk__node.html" title="双向环形链表节点">dclnk_iter</a> _k_j = _k_i-&gt;<a class="code" href="struct____dclnk__node.html#a7fd3e4e933fc09c588ab28b651e471c0" title="后继节点">next</a>;                               \
        <span class="keywordflow">while</span> (_k_j != _k_e) {                                      \
            <a class="code" href="struct____dclnk__node.html" title="双向环形链表节点">dclnk_iter</a> _k_m = _k_i;                                 \
            <span class="keywordflow">while</span> (_k_j != _k_e) {                                  \
                type * _k_pj = container_of(_k_j, type, member);    \
                type * _k_pm = container_of(_k_m, type, member);    \
                <span class="keywordflow">if</span> (greater(_k_pm, _k_pj))                          \
                    _k_m = _k_j;                                    \
                _k_j = _k_j-&gt;<a class="code" href="struct____dclnk__node.html#a7fd3e4e933fc09c588ab28b651e471c0" title="后继节点">next</a>;                                  \
            }                                                       \
            <span class="keywordflow">if</span> (_k_i != _k_m) {                                     \
                <a class="code" href="struct____dclnk__node.html" title="双向环形链表节点">dclnk_iter</a> _k_t = _k_m;                             \
                _k_m = _k_i;                                        \
                _k_i = _k_t;                                        \
                <a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga1b46f8add85b96289a18c71c67ad9c29" title="交换两个节点">dclnk_iter_swap</a>(_k_m, _k_i);                        \
            }                                                       \
            _k_i = _k_i-&gt;<a class="code" href="struct____dclnk__node.html#a7fd3e4e933fc09c588ab28b651e471c0" title="后继节点">next</a>;                                      \
            _k_j = _k_i-&gt;<a class="code" href="struct____dclnk__node.html#a7fd3e4e933fc09c588ab28b651e471c0" title="后继节点">next</a>;                                      \
        }                                                           \
    } <span class="keywordflow">while</span> (0)
</pre></div>
<p>对表进行选择排序 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">_begin</td><td>起始位置 </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">_end</td><td>终止位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">greater</td><td>比较函数或宏 升序:((*i)-&gt;x &gt; (*j)-&gt;x) 降序:((*i)-&gt;x &lt; (*j)-&gt;x) </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>拥有者类型 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">member</td><td>所在成员名 </td></tr>
  </table>
  </dd>
</dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga625abc40f57fd4e8c00e9b64fa095435" title="判断表是否可以排序">dclnk_sortable</a>, <a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga2c82cc2f6f97b84452c5c3a2fab2e8db" title="判断表是否按序">dclnk_is_sorted</a> </dd></dl>

<p>在文件<a class="el" href="dclnk_8h_source.html">dclnk.h</a>第<a class="el" href="dclnk_8h_source.html#l01210">1210</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga42b0a616f4ea695e408ec026c0e5aa66"></a><!-- doxytag: member="dclnk.h::dclnk_insert_sort" ref="ga42b0a616f4ea695e408ec026c0e5aa66" args="(_begin, _end, greater_equal, type, member)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dclnk_insert_sort</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">_begin, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">_end, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">greater_equal, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">member&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {\
        <a class="code" href="struct____dclnk__node.html" title="双向环形链表节点">dclnk_iter</a> _k_e = (_end);                                       \
        <a class="code" href="struct____dclnk__node.html" title="双向环形链表节点">dclnk_iter</a> _k_f = (_begin);                                     \
        <a class="code" href="struct____dclnk__node.html" title="双向环形链表节点">dclnk_iter</a> _k_i = _k_f-&gt;<a class="code" href="struct____dclnk__node.html#a7fd3e4e933fc09c588ab28b651e471c0" title="后继节点">next</a>;                                   \
        <span class="keywordflow">for</span> (_k_f = _k_f-&gt;<a class="code" href="struct____dclnk__node.html#ad6444cb695c4b196b886298f9e21cc10" title="前驱节点">prev</a>; _k_i != _k_e; _k_i = _k_i-&gt;<a class="code" href="struct____dclnk__node.html#a7fd3e4e933fc09c588ab28b651e471c0" title="后继节点">next</a>) {      \
            type * _k_pi = container_of(_k_i, type, member);            \
            <a class="code" href="struct____dclnk__node.html" title="双向环形链表节点">dclnk_iter</a> _k_j = _k_f-&gt;<a class="code" href="struct____dclnk__node.html#a7fd3e4e933fc09c588ab28b651e471c0" title="后继节点">next</a>;                               \
            <span class="keywordflow">while</span> (_k_j != _k_i) {                                      \
                type * _k_pj = container_of(_k_j, type, member);        \
                <span class="keywordflow">if</span> (greater_equal(_k_pj, _k_pi)) {                      \
                    <a class="code" href="struct____dclnk__node.html" title="双向环形链表节点">dclnk_iter</a> _k_t = _k_i;                             \
                    _k_i = _k_i-&gt;<a class="code" href="struct____dclnk__node.html#ad6444cb695c4b196b886298f9e21cc10" title="前驱节点">prev</a>;                                  \
                    <a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga54290e7f005a3a8aa376af933aff5c15" title="擦除节点">dclnk_erase</a>(_k_t);                                  \
                    <a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga3aec4f68e74e315887a21a81787866ec" title="插入节点到指定位置">dclnk_insert</a>(_k_j, _k_t);                           \
                    <span class="keywordflow">break</span>;                                              \
                }                                                       \
                _k_j = _k_j-&gt;<a class="code" href="struct____dclnk__node.html#a7fd3e4e933fc09c588ab28b651e471c0" title="后继节点">next</a>;                                      \
            }                                                           \
        }                                                               \
    } <span class="keywordflow">while</span> (0)
</pre></div>
<p>对表进行插入排序 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">_begin</td><td>起始位置 </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">_end</td><td>终止位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">greater</td><td>比较函数或宏 升序:((*i)-&gt;x &gt; (*j)-&gt;x) 降序:((*i)-&gt;x &lt; (*j)-&gt;x) </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>拥有者类型 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">member</td><td>所在成员名 </td></tr>
  </table>
  </dd>
</dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga625abc40f57fd4e8c00e9b64fa095435" title="判断表是否可以排序">dclnk_sortable</a>, <a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga2c82cc2f6f97b84452c5c3a2fab2e8db" title="判断表是否按序">dclnk_is_sorted</a> </dd></dl>

<p>在文件<a class="el" href="dclnk_8h_source.html">dclnk.h</a>第<a class="el" href="dclnk_8h_source.html#l01246">1246</a>行定义。</p>

</div>
</div>
<hr/><h2>函数文档</h2>
<a class="anchor" id="gad1423b930d6c464d2ac3bb12544bc27d"></a><!-- doxytag: member="dclnk.h::dclnk_check" ref="gad1423b930d6c464d2ac3bb12544bc27d" args="(dclnk_head *head, dclnk_iter *loop_entry)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">NV_API int dclnk_check </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct____dclnk__node.html">dclnk_head</a> *&#160;</td>
          <td class="paramname"><em>head</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="struct____dclnk__node.html">dclnk_iter</a> *&#160;</td>
          <td class="paramname"><em>loop_entry</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>判断链表结构是否正常 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">head</td><td>表头 </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">loop_entry</td><td>指向保存环路入口的迭代器，可以为NULL。 若为空，则不返回环路入口； 若不为空且仅有环路问题，则函数将环路入口保存到loop_entry </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>返回:</b></dt><dd>int 返回结果 </dd></dl>
<dl><dt><b>返回值:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname">DCLNK_CHECK_PASS</td><td>0 正常 </td></tr>
    <tr><td class="paramname">DCLNK_CHECK_LOOP</td><td>1 有非法环路 </td></tr>
    <tr><td class="paramname">DCLNK_CHECK_NULL</td><td>2 有节点指向NULL </td></tr>
    <tr><td class="paramname">DCLNK_CHECK_LINK</td><td>3 有节点的前驱指针不正确 </td></tr>
  </table>
  </dd>
</dl>

<p>在文件<a class="el" href="dclnk_8c_source.html">dclnk.c</a>第<a class="el" href="dclnk_8c_source.html#l00021">21</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gae9455cefe1552511a331da823887dfaa"></a><!-- doxytag: member="dclnk.h::dclnk_init" ref="gae9455cefe1552511a331da823887dfaa" args="(dclnk_head *head)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static inline void dclnk_init </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct____dclnk__node.html">dclnk_head</a> *&#160;</td>
          <td class="paramname"><em>head</em></td><td>)</td>
          <td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>初始化表头 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[out]</td><td class="paramname">head</td><td>目标表头 </td></tr>
  </table>
  </dd>
</dl>
<dl class="user"><dt><b>示例:</b></dt><dd><div class="fragment"><pre class="fragment">    <a class="code" href="struct____dclnk__node.html" title="双向环形链表节点">dclnk_head</a> head;
    <span class="comment">// 初始化</span>
    <a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gae9455cefe1552511a331da823887dfaa" title="初始化表头">dclnk_init</a>(&amp;head);
</pre></div> </dd></dl>

<p>在文件<a class="el" href="dclnk_8h_source.html">dclnk.h</a>第<a class="el" href="dclnk_8h_source.html#l00098">98</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gabacadadbd8582d69f3f20863b08f6328"></a><!-- doxytag: member="dclnk.h::dclnk_empty" ref="gabacadadbd8582d69f3f20863b08f6328" args="(dclnk_head *head)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static inline int dclnk_empty </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct____dclnk__node.html">dclnk_head</a> *&#160;</td>
          <td class="paramname"><em>head</em></td><td>)</td>
          <td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>判断表是否为空 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">head</td><td>表头 </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>返回:</b></dt><dd>int 返回结果 </dd></dl>
<dl><dt><b>返回值:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname">1</td><td>真 </td></tr>
    <tr><td class="paramname">0</td><td>假 </td></tr>
  </table>
  </dd>
</dl>
<dl class="user"><dt><b>示例:</b></dt><dd><div class="fragment"><pre class="fragment">    <span class="keywordflow">if</span> (!<a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gabacadadbd8582d69f3f20863b08f6328" title="判断表是否为空">dclnk_empty</a>(&amp;head)) {
        ......
    }
</pre></div> </dd></dl>

<p>在文件<a class="el" href="dclnk_8h_source.html">dclnk.h</a>第<a class="el" href="dclnk_8h_source.html#l00118">118</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gaced72da34e1eab3d113981450be479e0"></a><!-- doxytag: member="dclnk.h::dclnk_singular" ref="gaced72da34e1eab3d113981450be479e0" args="(dclnk_head *head)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static inline int dclnk_singular </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct____dclnk__node.html">dclnk_head</a> *&#160;</td>
          <td class="paramname"><em>head</em></td><td>)</td>
          <td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>判断表是否只有单个节点 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">head</td><td>表头 </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>返回:</b></dt><dd>int 返回结果 </dd></dl>
<dl><dt><b>返回值:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname">1</td><td>真 </td></tr>
    <tr><td class="paramname">0</td><td>假 </td></tr>
  </table>
  </dd>
</dl>
<dl class="user"><dt><b>示例:</b></dt><dd><div class="fragment"><pre class="fragment">    <span class="keywordflow">if</span> (<a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gaced72da34e1eab3d113981450be479e0" title="判断表是否只有单个节点">dclnk_singular</a>(&amp;head)) {
        ......
    }
</pre></div> </dd></dl>

<p>在文件<a class="el" href="dclnk_8h_source.html">dclnk.h</a>第<a class="el" href="dclnk_8h_source.html#l00142">142</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga625abc40f57fd4e8c00e9b64fa095435"></a><!-- doxytag: member="dclnk.h::dclnk_sortable" ref="ga625abc40f57fd4e8c00e9b64fa095435" args="(dclnk_iter begin, dclnk_iter end)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static inline int dclnk_sortable </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct____dclnk__node.html">dclnk_iter</a>&#160;</td>
          <td class="paramname"><em>begin</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="struct____dclnk__node.html">dclnk_iter</a>&#160;</td>
          <td class="paramname"><em>end</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>判断表是否可以排序 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">begin</td><td>起始位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">end</td><td>结束位置 </td></tr>
  </table>
  </dd>
</dl>
<dl class="note"><dt><b>注解:</b></dt><dd>即判断是否至少有两个节点 </dd></dl>
<dl class="return"><dt><b>返回:</b></dt><dd>int 返回结果 </dd></dl>
<dl><dt><b>返回值:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname">1</td><td>真 </td></tr>
    <tr><td class="paramname">0</td><td>假 </td></tr>
  </table>
  </dd>
</dl>
<dl class="user"><dt><b>示例:</b></dt><dd><div class="fragment"><pre class="fragment">    <a class="code" href="struct____dclnk__node.html" title="双向环形链表节点">dclnk_iter</a> begin = <a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga775a15538846de23d715ba0bf3afa3a5" title="得到指向正向起始位置的迭代器">dclnk_begin</a>(&amp;head);
    <a class="code" href="struct____dclnk__node.html" title="双向环形链表节点">dclnk_iter</a> end = <a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga7ba5dcacaa98db4d65f82ac7892513f0" title="得到指向正向终止位置的迭代器">dclnk_end</a>(&amp;head);
    <span class="comment">// 判断是否可以排序</span>
    <span class="keywordflow">if</span> (<a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga625abc40f57fd4e8c00e9b64fa095435" title="判断表是否可以排序">dclnk_sortable</a>(begin, end)) {
        <span class="comment">// 插入排序</span>
        <a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga42b0a616f4ea695e408ec026c0e5aa66" title="对表进行插入排序">dclnk_insert_sort</a>(begin, end, DATA_GreaterEqual, DATA, node);
    }
</pre></div> </dd></dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gacbcd3f2e98eab443214b8360d76b8867" title="对表进行冒泡排序">dclnk_bubble_sort</a>, <a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gaabc1f7a36fcd57b49548b0e624c0d456" title="对表进行奇偶排序">dclnk_oddeven_sort</a>, <a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gaa160913519a021ded8188af193538b99" title="对表进行选择排序">dclnk_select_sort</a>, <a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga42b0a616f4ea695e408ec026c0e5aa66" title="对表进行插入排序">dclnk_insert_sort</a>, <a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga2c82cc2f6f97b84452c5c3a2fab2e8db" title="判断表是否按序">dclnk_is_sorted</a> </dd></dl>

<p>在文件<a class="el" href="dclnk_8h_source.html">dclnk.h</a>第<a class="el" href="dclnk_8h_source.html#l00169">169</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga377d3abdd5a7deaf0ba75ddd6391a908"></a><!-- doxytag: member="dclnk.h::dclnk_serialable" ref="ga377d3abdd5a7deaf0ba75ddd6391a908" args="(dclnk_head *head)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static inline int dclnk_serialable </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct____dclnk__node.html">dclnk_head</a> *&#160;</td>
          <td class="paramname"><em>head</em></td><td>)</td>
          <td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>判断表是否可以序列化 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">head</td><td>表头 </td></tr>
  </table>
  </dd>
</dl>
<dl class="note"><dt><b>注解:</b></dt><dd>即判断是否至少有一个节点 </dd></dl>
<dl class="return"><dt><b>返回:</b></dt><dd>int 返回结果 </dd></dl>
<dl><dt><b>返回值:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname">1</td><td>真 </td></tr>
    <tr><td class="paramname">0</td><td>假 </td></tr>
  </table>
  </dd>
</dl>
<dl class="user"><dt><b>示例:</b></dt><dd><div class="fragment"><pre class="fragment">    <span class="comment">// 判断是否可以序列化</span>
    <span class="keywordflow">if</span> (<a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga377d3abdd5a7deaf0ba75ddd6391a908" title="判断表是否可以序列化">dclnk_serialable</a>(&amp;head)) {
        <a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gab7b8f6f20db0f3e5681fd2184b1ae60c" title="type类型表头">slseq_head</a>(DATA*) seq;
        <span class="comment">// 分配序列缓存</span>
        DATA** buf = (DATA**)malloc(sizeof(DATA*) * list_cnt);
        <span class="comment">// 序列化</span>
        <a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga4c8e23b2ed6f6855d4c43b02c0036e12" title="表的序列化">dclnk_serialize</a>(&amp;head, buf, DATA, node);
        <a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga08213d0c7bcf381b466b18e3822c6934" title="初始化序列">SLSEQ_INIT_SERIAL</a>(&amp;seq, buf, list_cnt);
        <span class="comment">// 希尔排序</span>
        <a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga197b786747dc3c95744f2bf8060b36ad" title="希尔排序">slseq_shell_sort</a>(DATA*, <a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga2696503718b3292109d395da44c988b6" title="得到指向正向起始位置的迭代器">slseq_begin</a>(&amp;seq), 
            <a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga5b3212d3b18809e193c701f7c6fef755" title="得到指向正向终止位置的迭代器">slseq_end</a>(&amp;seq), DATA_Greater);
        <span class="comment">// 反序列化</span>
        <a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gae8cc4e2839f2cef62d6fb8925f271308" title="表的反序列化">dclnk_deserialize</a>(&amp;head, buf, list_cnt, DATA, node);
        <span class="comment">// 释放缓存</span>
        free(buf);
    }
</pre></div> </dd></dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga4c8e23b2ed6f6855d4c43b02c0036e12" title="表的序列化">dclnk_serialize</a>, <a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gae8cc4e2839f2cef62d6fb8925f271308" title="表的反序列化">dclnk_deserialize</a> </dd></dl>

<p>在文件<a class="el" href="dclnk_8h_source.html">dclnk.h</a>第<a class="el" href="dclnk_8h_source.html#l00203">203</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga4ad181b1f8cf42e5e3ff3e9c623f22fc"></a><!-- doxytag: member="dclnk.h::dclnk_link" ref="ga4ad181b1f8cf42e5e3ff3e9c623f22fc" args="(dclnk_iter prev, dclnk_iter next)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static inline void dclnk_link </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct____dclnk__node.html">dclnk_iter</a>&#160;</td>
          <td class="paramname"><em>prev</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="struct____dclnk__node.html">dclnk_iter</a>&#160;</td>
          <td class="paramname"><em>next</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>链接两个节点 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">prev</td><td>前驱节点 </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">next</td><td>后继节点 </td></tr>
  </table>
  </dd>
</dl>
<dl class="note"><dt><b>注解:</b></dt><dd>链接prev和next节点 </dd></dl>

<p>在文件<a class="el" href="dclnk_8h_source.html">dclnk.h</a>第<a class="el" href="dclnk_8h_source.html#l00215">215</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gae94eb1f1c4deac0da3205273c0efdad1"></a><!-- doxytag: member="dclnk.h::dclnk_insert_between" ref="gae94eb1f1c4deac0da3205273c0efdad1" args="(dclnk_node *newly, dclnk_iter prev, dclnk_iter next)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static inline void dclnk_insert_between </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct____dclnk__node.html">dclnk_node</a> *&#160;</td>
          <td class="paramname"><em>newly</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="struct____dclnk__node.html">dclnk_iter</a>&#160;</td>
          <td class="paramname"><em>prev</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="struct____dclnk__node.html">dclnk_iter</a>&#160;</td>
          <td class="paramname"><em>next</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>在两个节点之间插入一个新节点 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">newly</td><td>新节点 </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">prev</td><td>前驱节点 </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">next</td><td>后继节点 </td></tr>
  </table>
  </dd>
</dl>
<dl class="note"><dt><b>注解:</b></dt><dd>将newly节点插入到prev和next节点之间。如果prev和next不是相邻节点， 则newly将替换掉prev和next之间的所有节点 </dd></dl>

<p>在文件<a class="el" href="dclnk_8h_source.html">dclnk.h</a>第<a class="el" href="dclnk_8h_source.html#l00234">234</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga3aec4f68e74e315887a21a81787866ec"></a><!-- doxytag: member="dclnk.h::dclnk_insert" ref="ga3aec4f68e74e315887a21a81787866ec" args="(dclnk_iter pos, dclnk_node *newly)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static inline void dclnk_insert </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct____dclnk__node.html">dclnk_iter</a>&#160;</td>
          <td class="paramname"><em>pos</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="struct____dclnk__node.html">dclnk_node</a> *&#160;</td>
          <td class="paramname"><em>newly</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>插入节点到指定位置 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">pos</td><td>插入位置 </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">newly</td><td>新节点 </td></tr>
  </table>
  </dd>
</dl>
<dl class="note"><dt><b>注解:</b></dt><dd>将newly节点插入到pos的位置上，pos是从表头开始的位置 </dd></dl>
<dl class="user"><dt><b>示例:</b></dt><dd><div class="fragment"><pre class="fragment">    <a class="code" href="struct____dclnk__node.html" title="双向环形链表节点">dclnk_iter</a> pos = <a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gad47975ec126fcb95e697450d8f83d1b7" title="根据正向索引得到迭代器">dclnk_at</a>(&amp;head, 8);
    DATA* p = (DATA*)malloc(<span class="keyword">sizeof</span>(DATA));
    <span class="comment">// 将p节点插入到pos所在的位置</span>
    <a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga3aec4f68e74e315887a21a81787866ec" title="插入节点到指定位置">dclnk_insert</a>(pos, &amp;p-&gt;node);
</pre></div> </dd></dl>

<p>在文件<a class="el" href="dclnk_8h_source.html">dclnk.h</a>第<a class="el" href="dclnk_8h_source.html#l00276">276</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga54290e7f005a3a8aa376af933aff5c15"></a><!-- doxytag: member="dclnk.h::dclnk_erase" ref="ga54290e7f005a3a8aa376af933aff5c15" args="(dclnk_iter entry)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static inline void dclnk_erase </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct____dclnk__node.html">dclnk_iter</a>&#160;</td>
          <td class="paramname"><em>entry</em></td><td>)</td>
          <td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>擦除节点 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">entry</td><td>目标节点 </td></tr>
  </table>
  </dd>
</dl>
<dl class="user"><dt><b>示例:</b></dt><dd><div class="fragment"><pre class="fragment">    <a class="code" href="struct____dclnk__node.html" title="双向环形链表节点">dclnk_iter</a> e = <a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga7ba5dcacaa98db4d65f82ac7892513f0" title="得到指向正向终止位置的迭代器">dclnk_end</a>(&amp;head);
    <a class="code" href="struct____dclnk__node.html" title="双向环形链表节点">dclnk_iter</a> i = <a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga775a15538846de23d715ba0bf3afa3a5" title="得到指向正向起始位置的迭代器">dclnk_begin</a>(&amp;head);
    <span class="keywordflow">while</span> (i != e) {
        <span class="keywordflow">if</span> (is_bad_data(container_of(i, DATA, node)))
            <a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga54290e7f005a3a8aa376af933aff5c15" title="擦除节点">dclnk_erase</a>(<a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga098729f5dc47317dc9c20a257f2420a6" title="迭代器后自增">dclnk_inc_later</a>(i));
        <span class="keywordflow">else</span>
            <a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gaea2c7c56280acea09dafcba1aba02bb5" title="迭代器递增">dclnk_inc</a>(i);
    }
</pre></div> </dd></dl>

<p>在文件<a class="el" href="dclnk_8h_source.html">dclnk.h</a>第<a class="el" href="dclnk_8h_source.html#l00297">297</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga78e459a9830ebf4f94244c5f86f64007"></a><!-- doxytag: member="dclnk.h::dclnk_erases" ref="ga78e459a9830ebf4f94244c5f86f64007" args="(dclnk_iter begin, dclnk_iter end, dclnk_pr1 erase_handler)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static inline void dclnk_erases </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct____dclnk__node.html">dclnk_iter</a>&#160;</td>
          <td class="paramname"><em>begin</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="struct____dclnk__node.html">dclnk_iter</a>&#160;</td>
          <td class="paramname"><em>end</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga432620df92f8f8be4ac3682ae48f63bf">dclnk_pr1</a>&#160;</td>
          <td class="paramname"><em>erase_handler</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>清空区域 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">begin</td><td>区域起始位置 </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">end</td><td>区域终止位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">erase_handler</td><td>移除响应函数，通常用于监视和释放节点，可以传递NULL, 表示不为删除的节点调用响应来处理 </td></tr>
  </table>
  </dd>
</dl>
<dl class="note"><dt><b>注解:</b></dt><dd>函数会为每一个被移除的节点调用erase_handler来处理节点 </dd></dl>

<p>在文件<a class="el" href="dclnk_8h_source.html">dclnk.h</a>第<a class="el" href="dclnk_8h_source.html#l00319">319</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gae5307c1791a409caa2dca5336269c0ae"></a><!-- doxytag: member="dclnk.h::dclnk_clear" ref="gae5307c1791a409caa2dca5336269c0ae" args="(dclnk_head *head, dclnk_pr1 erase_handler)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static inline void dclnk_clear </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct____dclnk__node.html">dclnk_head</a> *&#160;</td>
          <td class="paramname"><em>head</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga432620df92f8f8be4ac3682ae48f63bf">dclnk_pr1</a>&#160;</td>
          <td class="paramname"><em>erase_handler</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>清空表 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">head</td><td>表头 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">erase_handler</td><td>移除响应函数，通常用于监视和释放节点，可以传递NULL, 表示不为删除的节点调用响应来处理 </td></tr>
  </table>
  </dd>
</dl>
<dl class="note"><dt><b>注解:</b></dt><dd>函数会为每一个被移除的节点调用erase_handler来处理节点 </dd></dl>

<p>在文件<a class="el" href="dclnk_8h_source.html">dclnk.h</a>第<a class="el" href="dclnk_8h_source.html#l00336">336</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gafac002b8ed02d7bc5d0a65343885a6b6"></a><!-- doxytag: member="dclnk.h::dclnk_push_front" ref="gafac002b8ed02d7bc5d0a65343885a6b6" args="(dclnk_head *head, dclnk_node *newly)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static inline void dclnk_push_front </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct____dclnk__node.html">dclnk_head</a> *&#160;</td>
          <td class="paramname"><em>head</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="struct____dclnk__node.html">dclnk_node</a> *&#160;</td>
          <td class="paramname"><em>newly</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>在表首添加节点 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">head</td><td>表头 </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">newly</td><td>新节点 </td></tr>
  </table>
  </dd>
</dl>

<p>在文件<a class="el" href="dclnk_8h_source.html">dclnk.h</a>第<a class="el" href="dclnk_8h_source.html#l00347">347</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga53f3bb8691c7fed9ae0ad8c00d2f16a5"></a><!-- doxytag: member="dclnk.h::dclnk_push_back" ref="ga53f3bb8691c7fed9ae0ad8c00d2f16a5" args="(dclnk_head *head, dclnk_node *newly)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static inline void dclnk_push_back </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct____dclnk__node.html">dclnk_head</a> *&#160;</td>
          <td class="paramname"><em>head</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="struct____dclnk__node.html">dclnk_node</a> *&#160;</td>
          <td class="paramname"><em>newly</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>在表尾添加节点 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">head</td><td>表头 </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">newly</td><td>新节点 </td></tr>
  </table>
  </dd>
</dl>

<p>在文件<a class="el" href="dclnk_8h_source.html">dclnk.h</a>第<a class="el" href="dclnk_8h_source.html#l00358">358</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gaadc0edbfff468d99bf4def46b9199ba6"></a><!-- doxytag: member="dclnk.h::dclnk_pop_front" ref="gaadc0edbfff468d99bf4def46b9199ba6" args="(dclnk_head *head)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static inline void dclnk_pop_front </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct____dclnk__node.html">dclnk_head</a> *&#160;</td>
          <td class="paramname"><em>head</em></td><td>)</td>
          <td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>移除表首节点 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">head</td><td>表头 </td></tr>
  </table>
  </dd>
</dl>

<p>在文件<a class="el" href="dclnk_8h_source.html">dclnk.h</a>第<a class="el" href="dclnk_8h_source.html#l00368">368</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gafb39540ec6ad4ace0a4d62d415c85a19"></a><!-- doxytag: member="dclnk.h::dclnk_pop_back" ref="gafb39540ec6ad4ace0a4d62d415c85a19" args="(dclnk_head *head)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static inline void dclnk_pop_back </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct____dclnk__node.html">dclnk_head</a> *&#160;</td>
          <td class="paramname"><em>head</em></td><td>)</td>
          <td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>移除表尾节点 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">head</td><td>表头 </td></tr>
  </table>
  </dd>
</dl>

<p>在文件<a class="el" href="dclnk_8h_source.html">dclnk.h</a>第<a class="el" href="dclnk_8h_source.html#l00378">378</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga75733d92e80fbfc79f4fc56f0b124c4e"></a><!-- doxytag: member="dclnk.h::dclnk_splice_between" ref="ga75733d92e80fbfc79f4fc56f0b124c4e" args="(dclnk_iter prev, dclnk_iter next, dclnk_iter first_prev, dclnk_iter first, dclnk_iter last, dclnk_iter last_next)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static inline void dclnk_splice_between </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct____dclnk__node.html">dclnk_iter</a>&#160;</td>
          <td class="paramname"><em>prev</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="struct____dclnk__node.html">dclnk_iter</a>&#160;</td>
          <td class="paramname"><em>next</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="struct____dclnk__node.html">dclnk_iter</a>&#160;</td>
          <td class="paramname"><em>first_prev</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="struct____dclnk__node.html">dclnk_iter</a>&#160;</td>
          <td class="paramname"><em>first</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="struct____dclnk__node.html">dclnk_iter</a>&#160;</td>
          <td class="paramname"><em>last</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="struct____dclnk__node.html">dclnk_iter</a>&#160;</td>
          <td class="paramname"><em>last_next</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>在两个节点之间插入多个连续节点 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">prev</td><td>前驱节点 </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">next</td><td>后继节点 </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">first_prev</td><td>首节点的前驱节点 </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">first</td><td>首节点 </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">last</td><td>尾节点 </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">last_next</td><td>尾节点的后继节点 </td></tr>
  </table>
  </dd>
</dl>
<dl class="note"><dt><b>注解:</b></dt><dd>将从first至last的节点嫁接到prev和next之间。如果prev和next之间有节点， 则它们之间的节点将会被替换 </dd></dl>

<p>在文件<a class="el" href="dclnk_8h_source.html">dclnk.h</a>第<a class="el" href="dclnk_8h_source.html#l00398">398</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gada26a43a4037c0a216fdf79c83cd2baf"></a><!-- doxytag: member="dclnk.h::dclnk_splice" ref="gada26a43a4037c0a216fdf79c83cd2baf" args="(dclnk_iter pos, dclnk_iter first, dclnk_iter last)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static inline void dclnk_splice </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct____dclnk__node.html">dclnk_iter</a>&#160;</td>
          <td class="paramname"><em>pos</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="struct____dclnk__node.html">dclnk_iter</a>&#160;</td>
          <td class="paramname"><em>first</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="struct____dclnk__node.html">dclnk_iter</a>&#160;</td>
          <td class="paramname"><em>last</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>在两个节点之间插入多个连续节点 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">pos</td><td>插入位置 </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">first</td><td>首节点 </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">last</td><td>尾节点 </td></tr>
  </table>
  </dd>
</dl>
<dl class="note"><dt><b>注解:</b></dt><dd>将从first至last的节点嫁接到pos位置。可以跨链表移动 </dd></dl>
<dl class="user"><dt><b>示例:</b></dt><dd><div class="fragment"><pre class="fragment">    <span class="comment">// 将a链表的节点全部嫁接到b链表</span>
    <a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gada26a43a4037c0a216fdf79c83cd2baf" title="在两个节点之间插入多个连续节点">dclnk_splice</a>(b, <a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gaa4ddc5dca3168a9e3b3988ae7c907ae6" title="得到表首节点">dclnk_front</a>(a), <a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga64297f541720c79ce293bfee872c4e55" title="得到表尾节点">dclnk_back</a>(b));
    <span class="comment">// 将b到e的节点们移动到第4个节点的位置</span>
    <a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gada26a43a4037c0a216fdf79c83cd2baf" title="在两个节点之间插入多个连续节点">dclnk_splice</a>(<a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gad47975ec126fcb95e697450d8f83d1b7" title="根据正向索引得到迭代器">dclnk_at</a>(head, 3), b, e);
</pre></div> </dd></dl>

<p>在文件<a class="el" href="dclnk_8h_source.html">dclnk.h</a>第<a class="el" href="dclnk_8h_source.html#l00431">431</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gaa4d3dc1196aa9fe3c0c044503323ac15"></a><!-- doxytag: member="dclnk.h::dclnk_count" ref="gaa4d3dc1196aa9fe3c0c044503323ac15" args="(dclnk_head *head)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">NV_API size_t dclnk_count </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct____dclnk__node.html">dclnk_head</a> *&#160;</td>
          <td class="paramname"><em>head</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>统计表的节点数量 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">head</td><td>表头 </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>返回:</b></dt><dd>size_t 返回表的节点总数 </dd></dl>

<p>在文件<a class="el" href="dclnk_8c_source.html">dclnk.c</a>第<a class="el" href="dclnk_8c_source.html#l00100">100</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga0de88342e30ab0e6a95b648f641c82c1"></a><!-- doxytag: member="dclnk.h::dclnk_distance" ref="ga0de88342e30ab0e6a95b648f641c82c1" args="(dclnk_iter first, dclnk_iter last)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">NV_API size_t dclnk_distance </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct____dclnk__node.html">dclnk_iter</a>&#160;</td>
          <td class="paramname"><em>first</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="struct____dclnk__node.html">dclnk_iter</a>&#160;</td>
          <td class="paramname"><em>last</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>计算两个节点的迭代距离 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">first</td><td>首节点 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">last</td><td>尾节点 </td></tr>
  </table>
  </dd>
</dl>
<dl class="note"><dt><b>注解:</b></dt><dd>以索引为例，2到4的距离是4 (4-2+1=3) </dd></dl>
<dl class="return"><dt><b>返回:</b></dt><dd>size_t 返回距离 </dd></dl>

<p>在文件<a class="el" href="dclnk_8c_source.html">dclnk.c</a>第<a class="el" href="dclnk_8c_source.html#l00088">88</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga221a07d76e225d9f30e664bd95a5fcd8"></a><!-- doxytag: member="dclnk.h::dclnk_advance" ref="ga221a07d76e225d9f30e664bd95a5fcd8" args="(dclnk_head *head, dclnk_iter cur, int dist)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">NV_API <a class="el" href="struct____dclnk__node.html">dclnk_iter</a> dclnk_advance </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct____dclnk__node.html">dclnk_head</a> *&#160;</td>
          <td class="paramname"><em>head</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="struct____dclnk__node.html">dclnk_iter</a>&#160;</td>
          <td class="paramname"><em>cur</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>dist</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>给迭代器增加一段距离或减小一段距离 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">head</td><td>表头 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">cur</td><td>迭代器 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">dist</td><td>增加的距离。正数时，表示增加；负数时，表示减小 </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>返回:</b></dt><dd>dclnk_iter 返回新迭代器 </dd></dl>

<p>在文件<a class="el" href="dclnk_8c_source.html">dclnk.c</a>第<a class="el" href="dclnk_8c_source.html#l00120">120</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gad47975ec126fcb95e697450d8f83d1b7"></a><!-- doxytag: member="dclnk.h::dclnk_at" ref="gad47975ec126fcb95e697450d8f83d1b7" args="(dclnk_head *head, const size_t index)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static inline <a class="el" href="struct____dclnk__node.html">dclnk_iter</a> dclnk_at </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct____dclnk__node.html">dclnk_head</a> *&#160;</td>
          <td class="paramname"><em>head</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const size_t&#160;</td>
          <td class="paramname"><em>index</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>根据正向索引得到迭代器 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">head</td><td>表头 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">index</td><td>索引，从0开始 </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>返回:</b></dt><dd>dclnk_iter 返回对应的迭代器 </dd></dl>

<p>在文件<a class="el" href="dclnk_8h_source.html">dclnk.h</a>第<a class="el" href="dclnk_8h_source.html#l00472">472</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga5f7f38b76e8bac973050370a0344c84c"></a><!-- doxytag: member="dclnk.h::dclnk_reverse_at" ref="ga5f7f38b76e8bac973050370a0344c84c" args="(dclnk_head *head, const size_t index)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static inline <a class="el" href="struct____dclnk__node.html">dclnk_iter</a> dclnk_reverse_at </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct____dclnk__node.html">dclnk_head</a> *&#160;</td>
          <td class="paramname"><em>head</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const size_t&#160;</td>
          <td class="paramname"><em>index</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>根据逆向索引得到迭代器 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">head</td><td>表头 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">index</td><td>索引，从0开始 </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>返回:</b></dt><dd>dclnk_iter 返回对应的迭代器 </dd></dl>

<p>在文件<a class="el" href="dclnk_8h_source.html">dclnk.h</a>第<a class="el" href="dclnk_8h_source.html#l00485">485</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gaf73d46da1ca836dfd1a708f5c35122bc"></a><!-- doxytag: member="dclnk.h::dclnk_index_of" ref="gaf73d46da1ca836dfd1a708f5c35122bc" args="(dclnk_head *head, dclnk_iter itr)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">NV_API size_t dclnk_index_of </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct____dclnk__node.html">dclnk_head</a> *&#160;</td>
          <td class="paramname"><em>head</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="struct____dclnk__node.html">dclnk_iter</a>&#160;</td>
          <td class="paramname"><em>itr</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>计算迭代器的正向索引 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">head</td><td>表头 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">itr</td><td>迭代器 </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>返回:</b></dt><dd>size_t 返回索引 </dd></dl>

<p>在文件<a class="el" href="dclnk_8c_source.html">dclnk.c</a>第<a class="el" href="dclnk_8c_source.html#l00135">135</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gaf54726f41db556629a3c54dcede5a9f2"></a><!-- doxytag: member="dclnk.h::dclnk_reverse_index_of" ref="gaf54726f41db556629a3c54dcede5a9f2" args="(dclnk_head *head, dclnk_iter itr)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">NV_API size_t dclnk_reverse_index_of </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct____dclnk__node.html">dclnk_head</a> *&#160;</td>
          <td class="paramname"><em>head</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="struct____dclnk__node.html">dclnk_iter</a>&#160;</td>
          <td class="paramname"><em>itr</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>计算迭代器的逆向索引 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">head</td><td>表头 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">itr</td><td>迭代器 </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>返回:</b></dt><dd>size_t 返回索引 </dd></dl>

<p>在文件<a class="el" href="dclnk_8c_source.html">dclnk.c</a>第<a class="el" href="dclnk_8c_source.html#l00148">148</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga3c3c7474d2f624c8dc7bcc7925d60a87"></a><!-- doxytag: member="dclnk.h::dclnk_node_init" ref="ga3c3c7474d2f624c8dc7bcc7925d60a87" args="(dclnk_node *entry)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static inline void dclnk_node_init </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct____dclnk__node.html">dclnk_node</a> *&#160;</td>
          <td class="paramname"><em>entry</em></td><td>)</td>
          <td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>初始化节点 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[out]</td><td class="paramname">entry</td><td>节点 </td></tr>
  </table>
  </dd>
</dl>

<p>在文件<a class="el" href="dclnk_8h_source.html">dclnk.h</a>第<a class="el" href="dclnk_8h_source.html#l00514">514</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga077ff3ad59d6bfea0fade064d318480c"></a><!-- doxytag: member="dclnk.h::dclnk_iter_replace" ref="ga077ff3ad59d6bfea0fade064d318480c" args="(dclnk_node *victim, dclnk_node *newly)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static inline void dclnk_iter_replace </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct____dclnk__node.html">dclnk_node</a> *&#160;</td>
          <td class="paramname"><em>victim</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="struct____dclnk__node.html">dclnk_node</a> *&#160;</td>
          <td class="paramname"><em>newly</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>用新节点替换目标节点 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">victim</td><td>受害目标节点 </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">newly</td><td>新节点 </td></tr>
  </table>
  </dd>
</dl>

<p>在文件<a class="el" href="dclnk_8h_source.html">dclnk.h</a>第<a class="el" href="dclnk_8h_source.html#l00527">527</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga1b46f8add85b96289a18c71c67ad9c29"></a><!-- doxytag: member="dclnk.h::dclnk_iter_swap" ref="ga1b46f8add85b96289a18c71c67ad9c29" args="(dclnk_iter a, dclnk_iter b)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static inline void dclnk_iter_swap </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct____dclnk__node.html">dclnk_iter</a>&#160;</td>
          <td class="paramname"><em>a</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="struct____dclnk__node.html">dclnk_iter</a>&#160;</td>
          <td class="paramname"><em>b</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>交换两个节点 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">a</td><td>第一个节点 </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">b</td><td>第二个节点 </td></tr>
  </table>
  </dd>
</dl>

<p>在文件<a class="el" href="dclnk_8h_source.html">dclnk.h</a>第<a class="el" href="dclnk_8h_source.html#l00546">546</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga2753cb5c697b104f8c0c53b0fb6bf44d"></a><!-- doxytag: member="dclnk.h::dclnk_replace" ref="ga2753cb5c697b104f8c0c53b0fb6bf44d" args="(dclnk_head *victim, dclnk_head *newly)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static inline void dclnk_replace </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct____dclnk__node.html">dclnk_head</a> *&#160;</td>
          <td class="paramname"><em>victim</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="struct____dclnk__node.html">dclnk_head</a> *&#160;</td>
          <td class="paramname"><em>newly</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>用新表头替换目标表头 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">victim</td><td>受害目标表头 </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">newly</td><td>新表头 </td></tr>
  </table>
  </dd>
</dl>

<p>在文件<a class="el" href="dclnk_8h_source.html">dclnk.h</a>第<a class="el" href="dclnk_8h_source.html#l00557">557</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga655dec9de6ff78ba650545f4fd0cf25c"></a><!-- doxytag: member="dclnk.h::dclnk_swap" ref="ga655dec9de6ff78ba650545f4fd0cf25c" args="(dclnk_head *a, dclnk_head *b)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static inline void dclnk_swap </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct____dclnk__node.html">dclnk_head</a> *&#160;</td>
          <td class="paramname"><em>a</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="struct____dclnk__node.html">dclnk_head</a> *&#160;</td>
          <td class="paramname"><em>b</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>交换两个表头 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">a</td><td>第一个表头 </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">b</td><td>第二个表头 </td></tr>
  </table>
  </dd>
</dl>

<p>在文件<a class="el" href="dclnk_8h_source.html">dclnk.h</a>第<a class="el" href="dclnk_8h_source.html#l00584">584</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gad846825e029928eb6175a9950e9c2835"></a><!-- doxytag: member="dclnk.h::dclnk_exist" ref="gad846825e029928eb6175a9950e9c2835" args="(dclnk_head *head, dclnk_iter itr)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static inline int dclnk_exist </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct____dclnk__node.html">dclnk_head</a> *&#160;</td>
          <td class="paramname"><em>head</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="struct____dclnk__node.html">dclnk_iter</a>&#160;</td>
          <td class="paramname"><em>itr</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>判断一个节点是否存在于表中 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">head</td><td>表头 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">itr</td><td>目标节点 </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>返回:</b></dt><dd>int 返回结果 </dd></dl>
<dl><dt><b>返回值:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname">1</td><td>真 </td></tr>
    <tr><td class="paramname">0</td><td>假 </td></tr>
  </table>
  </dd>
</dl>

<p>在文件<a class="el" href="dclnk_8h_source.html">dclnk.h</a>第<a class="el" href="dclnk_8h_source.html#l00598">598</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gaa4ddc5dca3168a9e3b3988ae7c907ae6"></a><!-- doxytag: member="dclnk.h::dclnk_front" ref="gaa4ddc5dca3168a9e3b3988ae7c907ae6" args="(dclnk_head *head)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static inline <a class="el" href="struct____dclnk__node.html">dclnk_iter</a> dclnk_front </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct____dclnk__node.html">dclnk_head</a> *&#160;</td>
          <td class="paramname"><em>head</em></td><td>)</td>
          <td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>得到表首节点 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">head</td><td>表头 </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>返回:</b></dt><dd>dclnk_iter 返回表首节点 </dd></dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga64297f541720c79ce293bfee872c4e55" title="得到表尾节点">dclnk_back</a> </dd></dl>

<p>在文件<a class="el" href="dclnk_8h_source.html">dclnk.h</a>第<a class="el" href="dclnk_8h_source.html#l00610">610</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga64297f541720c79ce293bfee872c4e55"></a><!-- doxytag: member="dclnk.h::dclnk_back" ref="ga64297f541720c79ce293bfee872c4e55" args="(dclnk_head *head)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static inline <a class="el" href="struct____dclnk__node.html">dclnk_iter</a> dclnk_back </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct____dclnk__node.html">dclnk_head</a> *&#160;</td>
          <td class="paramname"><em>head</em></td><td>)</td>
          <td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>得到表尾节点 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">head</td><td>表头 </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>返回:</b></dt><dd>dclnk_iter 返回表尾节点 </dd></dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gaa4ddc5dca3168a9e3b3988ae7c907ae6" title="得到表首节点">dclnk_front</a> </dd></dl>

<p>在文件<a class="el" href="dclnk_8h_source.html">dclnk.h</a>第<a class="el" href="dclnk_8h_source.html#l00622">622</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga775a15538846de23d715ba0bf3afa3a5"></a><!-- doxytag: member="dclnk.h::dclnk_begin" ref="ga775a15538846de23d715ba0bf3afa3a5" args="(dclnk_head *head)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static inline <a class="el" href="struct____dclnk__node.html">dclnk_iter</a> dclnk_begin </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct____dclnk__node.html">dclnk_head</a> *&#160;</td>
          <td class="paramname"><em>head</em></td><td>)</td>
          <td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>得到指向正向起始位置的迭代器 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">head</td><td>表头 </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>返回:</b></dt><dd>dclnk_iter 返回迭代器 </dd></dl>
<dl class="user"><dt><b>示例:</b></dt><dd><div class="fragment"><pre class="fragment">    <span class="comment">// 遍历链表</span>
    <span class="keywordtype">int</span> index = 0;
    <a class="code" href="struct____dclnk__node.html" title="双向环形链表节点">dclnk_iter</a> e = <a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga7ba5dcacaa98db4d65f82ac7892513f0" title="得到指向正向终止位置的迭代器">dclnk_end</a>(&amp;head);
    <a class="code" href="struct____dclnk__node.html" title="双向环形链表节点">dclnk_iter</a> i = <a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga775a15538846de23d715ba0bf3afa3a5" title="得到指向正向起始位置的迭代器">dclnk_begin</a>(&amp;head);
    <span class="keywordflow">while</span> (i != e) {
        printf(<span class="stringliteral">&quot;[%d]=%d\n&quot;</span>, index++, owner_of(i, DATA, node).data);
        <a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gaea2c7c56280acea09dafcba1aba02bb5" title="迭代器递增">dclnk_inc</a>(i);
    }
</pre></div> </dd></dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga7ba5dcacaa98db4d65f82ac7892513f0" title="得到指向正向终止位置的迭代器">dclnk_end</a>, <a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga2ec16ec1678a27ac0b87166c3ab10288" title="得到指向逆向起始位置的迭代器">dclnk_rbegin</a>, <a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga42269157f5db93f73fd5eeb42d34d1d9" title="得到指向逆向终止位置的迭代器">dclnk_rend</a> </dd></dl>

<p>在文件<a class="el" href="dclnk_8h_source.html">dclnk.h</a>第<a class="el" href="dclnk_8h_source.html#l00645">645</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga7ba5dcacaa98db4d65f82ac7892513f0"></a><!-- doxytag: member="dclnk.h::dclnk_end" ref="ga7ba5dcacaa98db4d65f82ac7892513f0" args="(dclnk_head *head)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static inline <a class="el" href="struct____dclnk__node.html">dclnk_iter</a> dclnk_end </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct____dclnk__node.html">dclnk_head</a> *&#160;</td>
          <td class="paramname"><em>head</em></td><td>)</td>
          <td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>得到指向正向终止位置的迭代器 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">head</td><td>表头 </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>返回:</b></dt><dd>dclnk_iter 返回迭代器 </dd></dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga775a15538846de23d715ba0bf3afa3a5" title="得到指向正向起始位置的迭代器">dclnk_begin</a>, <a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga2ec16ec1678a27ac0b87166c3ab10288" title="得到指向逆向起始位置的迭代器">dclnk_rbegin</a>, <a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga42269157f5db93f73fd5eeb42d34d1d9" title="得到指向逆向终止位置的迭代器">dclnk_rend</a> </dd></dl>

<p>在文件<a class="el" href="dclnk_8h_source.html">dclnk.h</a>第<a class="el" href="dclnk_8h_source.html#l00657">657</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga9c6a5a5d5c387591c119756e21479e86"></a><!-- doxytag: member="dclnk.h::dclnk_end_of" ref="ga9c6a5a5d5c387591c119756e21479e86" args="(dclnk_iter itr)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static inline <a class="el" href="struct____dclnk__node.html">dclnk_iter</a> dclnk_end_of </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct____dclnk__node.html">dclnk_iter</a>&#160;</td>
          <td class="paramname"><em>itr</em></td><td>)</td>
          <td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>得到当前迭代器的正向终止位置 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">itr</td><td>迭代器 </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>返回:</b></dt><dd>dclnk_iter 返回迭代器 </dd></dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga775a15538846de23d715ba0bf3afa3a5" title="得到指向正向起始位置的迭代器">dclnk_begin</a>, <a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga7ba5dcacaa98db4d65f82ac7892513f0" title="得到指向正向终止位置的迭代器">dclnk_end</a> </dd></dl>

<p>在文件<a class="el" href="dclnk_8h_source.html">dclnk.h</a>第<a class="el" href="dclnk_8h_source.html#l00669">669</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga2ec16ec1678a27ac0b87166c3ab10288"></a><!-- doxytag: member="dclnk.h::dclnk_rbegin" ref="ga2ec16ec1678a27ac0b87166c3ab10288" args="(dclnk_head *head)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static inline <a class="el" href="struct____dclnk__node.html">dclnk_iter</a> dclnk_rbegin </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct____dclnk__node.html">dclnk_head</a> *&#160;</td>
          <td class="paramname"><em>head</em></td><td>)</td>
          <td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>得到指向逆向起始位置的迭代器 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">head</td><td>表头 </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>返回:</b></dt><dd>dclnk_iter 返回迭代器 </dd></dl>
<dl class="user"><dt><b>示例:</b></dt><dd><div class="fragment"><pre class="fragment">    <span class="comment">// 逆向遍历链表</span>
    <span class="keywordtype">int</span> index = 0;
    <a class="code" href="struct____dclnk__node.html" title="双向环形链表节点">dclnk_iter</a> e = <a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga42269157f5db93f73fd5eeb42d34d1d9" title="得到指向逆向终止位置的迭代器">dclnk_rend</a>(&amp;head);
    <a class="code" href="struct____dclnk__node.html" title="双向环形链表节点">dclnk_iter</a> i = <a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga2ec16ec1678a27ac0b87166c3ab10288" title="得到指向逆向起始位置的迭代器">dclnk_rbegin</a>(&amp;head);
    <span class="keywordflow">while</span> (i != e) {
        printf(<span class="stringliteral">&quot;[%d]=%d\n&quot;</span>, index++, owner_of(i, DATA, node).data);
        <a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gaedd9b66da5685e28f99eeaecc34d3c8c" title="迭代器递减">dclnk_dec</a>(i);
    }
</pre></div> </dd></dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga7ba5dcacaa98db4d65f82ac7892513f0" title="得到指向正向终止位置的迭代器">dclnk_end</a>, <a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga775a15538846de23d715ba0bf3afa3a5" title="得到指向正向起始位置的迭代器">dclnk_begin</a>, <a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga42269157f5db93f73fd5eeb42d34d1d9" title="得到指向逆向终止位置的迭代器">dclnk_rend</a> </dd></dl>

<p>在文件<a class="el" href="dclnk_8h_source.html">dclnk.h</a>第<a class="el" href="dclnk_8h_source.html#l00692">692</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga42269157f5db93f73fd5eeb42d34d1d9"></a><!-- doxytag: member="dclnk.h::dclnk_rend" ref="ga42269157f5db93f73fd5eeb42d34d1d9" args="(dclnk_head *head)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static inline <a class="el" href="struct____dclnk__node.html">dclnk_iter</a> dclnk_rend </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct____dclnk__node.html">dclnk_head</a> *&#160;</td>
          <td class="paramname"><em>head</em></td><td>)</td>
          <td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>得到指向逆向终止位置的迭代器 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">head</td><td>表头 </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>返回:</b></dt><dd>dclnk_iter 返回迭代器 </dd></dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga7ba5dcacaa98db4d65f82ac7892513f0" title="得到指向正向终止位置的迭代器">dclnk_end</a>, <a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga2ec16ec1678a27ac0b87166c3ab10288" title="得到指向逆向起始位置的迭代器">dclnk_rbegin</a>, <a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga775a15538846de23d715ba0bf3afa3a5" title="得到指向正向起始位置的迭代器">dclnk_begin</a> </dd></dl>

<p>在文件<a class="el" href="dclnk_8h_source.html">dclnk.h</a>第<a class="el" href="dclnk_8h_source.html#l00704">704</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga2cc91af5ec84d64b019be9c0023c2aa8"></a><!-- doxytag: member="dclnk.h::dclnk_rend_of" ref="ga2cc91af5ec84d64b019be9c0023c2aa8" args="(dclnk_iter itr)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static inline <a class="el" href="struct____dclnk__node.html">dclnk_iter</a> dclnk_rend_of </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct____dclnk__node.html">dclnk_iter</a>&#160;</td>
          <td class="paramname"><em>itr</em></td><td>)</td>
          <td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>得到当前迭代器的逆向终止位置 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">itr</td><td>当前迭代器 </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>返回:</b></dt><dd>dclnk_iter 返回迭代器 </dd></dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga2ec16ec1678a27ac0b87166c3ab10288" title="得到指向逆向起始位置的迭代器">dclnk_rbegin</a>, <a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga42269157f5db93f73fd5eeb42d34d1d9" title="得到指向逆向终止位置的迭代器">dclnk_rend</a> </dd></dl>

<p>在文件<a class="el" href="dclnk_8h_source.html">dclnk.h</a>第<a class="el" href="dclnk_8h_source.html#l00716">716</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga5699b2d9bb2082637b80d7ee473bd00e"></a><!-- doxytag: member="dclnk.h::dclnk_next" ref="ga5699b2d9bb2082637b80d7ee473bd00e" args="(dclnk_iter itr)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static inline <a class="el" href="struct____dclnk__node.html">dclnk_iter</a> dclnk_next </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct____dclnk__node.html">dclnk_iter</a>&#160;</td>
          <td class="paramname"><em>itr</em></td><td>)</td>
          <td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>得到当前节点的后继节点 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">itr</td><td>当前节点 </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>返回:</b></dt><dd>dclnk_iter 返回后继节点 </dd></dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gac9747211a6b24a7c38fd92f43f35ad0d" title="得到当前节点的前驱节点">dclnk_prev</a> </dd></dl>

<p>在文件<a class="el" href="dclnk_8h_source.html">dclnk.h</a>第<a class="el" href="dclnk_8h_source.html#l00728">728</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gac9747211a6b24a7c38fd92f43f35ad0d"></a><!-- doxytag: member="dclnk.h::dclnk_prev" ref="gac9747211a6b24a7c38fd92f43f35ad0d" args="(dclnk_iter itr)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static inline <a class="el" href="struct____dclnk__node.html">dclnk_iter</a> dclnk_prev </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct____dclnk__node.html">dclnk_iter</a>&#160;</td>
          <td class="paramname"><em>itr</em></td><td>)</td>
          <td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>得到当前节点的前驱节点 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">itr</td><td>当前节点 </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>返回:</b></dt><dd>dclnk_iter 返回前驱节点 </dd></dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga5699b2d9bb2082637b80d7ee473bd00e" title="得到当前节点的后继节点">dclnk_next</a> </dd></dl>

<p>在文件<a class="el" href="dclnk_8h_source.html">dclnk.h</a>第<a class="el" href="dclnk_8h_source.html#l00740">740</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga310d89f0377a31ddfec420f54ed43ea1"></a><!-- doxytag: member="dclnk.h::dclnk_vbegin" ref="ga310d89f0377a31ddfec420f54ed43ea1" args="(dclnk_head *head)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static inline <a class="el" href="struct____dclnk__node.html">dclnk_iter</a> dclnk_vbegin </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct____dclnk__node.html">dclnk_head</a> *&#160;</td>
          <td class="paramname"><em>head</em></td><td>)</td>
          <td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>得到用于反转的起始位置的迭代器 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">head</td><td>表头 </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>返回:</b></dt><dd>dclnk_iter 返回迭代器 </dd></dl>
<dl class="user"><dt><b>示例:</b></dt><dd><div class="fragment"><pre class="fragment">    <span class="comment">// 反转表</span>
    <a class="code" href="struct____dclnk__node.html" title="双向环形链表节点">dclnk_iter</a> ve = <a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga7e058f07e0740f7f810abe5305472a02" title="得到用于反转的终止位置的迭代器">dclnk_vend</a>(&amp;head);
    <a class="code" href="struct____dclnk__node.html" title="双向环形链表节点">dclnk_iter</a> vi = <a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga310d89f0377a31ddfec420f54ed43ea1" title="得到用于反转的起始位置的迭代器">dclnk_vbegin</a>(&amp;head);
    <span class="keywordflow">while</span> (vi != ve) {
        <a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gadc0e328a4ae2283c8804107510b8b494" title="入栈反转">dclnk_vpush</a>(&amp;head, vi);
    }
</pre></div> </dd></dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga7e058f07e0740f7f810abe5305472a02" title="得到用于反转的终止位置的迭代器">dclnk_vend</a>, <a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gadc0e328a4ae2283c8804107510b8b494" title="入栈反转">dclnk_vpush</a>, <a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gadffbb5e0d816b360d559414d9f96f5cf" title="反转表">dclnk_reverse</a> </dd></dl>

<p>在文件<a class="el" href="dclnk_8h_source.html">dclnk.h</a>第<a class="el" href="dclnk_8h_source.html#l00871">871</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga7e058f07e0740f7f810abe5305472a02"></a><!-- doxytag: member="dclnk.h::dclnk_vend" ref="ga7e058f07e0740f7f810abe5305472a02" args="(dclnk_head *head)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static inline <a class="el" href="struct____dclnk__node.html">dclnk_iter</a> dclnk_vend </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct____dclnk__node.html">dclnk_head</a> *&#160;</td>
          <td class="paramname"><em>head</em></td><td>)</td>
          <td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>得到用于反转的终止位置的迭代器 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">head</td><td>表头 </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>返回:</b></dt><dd>dclnk_iter 返回迭代器 </dd></dl>
<dl class="user"><dt><b>示例:</b></dt><dd><div class="fragment"><pre class="fragment">    <span class="comment">// 反转表</span>
    <a class="code" href="struct____dclnk__node.html" title="双向环形链表节点">dclnk_iter</a> ve = <a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga7e058f07e0740f7f810abe5305472a02" title="得到用于反转的终止位置的迭代器">dclnk_vend</a>(&amp;head);
    <a class="code" href="struct____dclnk__node.html" title="双向环形链表节点">dclnk_iter</a> vi = <a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga310d89f0377a31ddfec420f54ed43ea1" title="得到用于反转的起始位置的迭代器">dclnk_vbegin</a>(&amp;head);
    <span class="keywordflow">while</span> (vi != ve) {
        <a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gadc0e328a4ae2283c8804107510b8b494" title="入栈反转">dclnk_vpush</a>(&amp;head, vi);
    }
</pre></div> </dd></dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga310d89f0377a31ddfec420f54ed43ea1" title="得到用于反转的起始位置的迭代器">dclnk_vbegin</a>, <a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gadc0e328a4ae2283c8804107510b8b494" title="入栈反转">dclnk_vpush</a>, <a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gadffbb5e0d816b360d559414d9f96f5cf" title="反转表">dclnk_reverse</a> </dd></dl>

<p>在文件<a class="el" href="dclnk_8h_source.html">dclnk.h</a>第<a class="el" href="dclnk_8h_source.html#l00892">892</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gadffbb5e0d816b360d559414d9f96f5cf"></a><!-- doxytag: member="dclnk.h::dclnk_reverse" ref="gadffbb5e0d816b360d559414d9f96f5cf" args="(dclnk_head *head)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">NV_API void dclnk_reverse </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct____dclnk__node.html">dclnk_head</a> *&#160;</td>
          <td class="paramname"><em>head</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>反转表 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">head</td><td>表头 </td></tr>
  </table>
  </dd>
</dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga310d89f0377a31ddfec420f54ed43ea1" title="得到用于反转的起始位置的迭代器">dclnk_vbegin</a>, <a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga7e058f07e0740f7f810abe5305472a02" title="得到用于反转的终止位置的迭代器">dclnk_vend</a>, <a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gadc0e328a4ae2283c8804107510b8b494" title="入栈反转">dclnk_vpush</a> </dd></dl>

<p>在文件<a class="el" href="dclnk_8c_source.html">dclnk.c</a>第<a class="el" href="dclnk_8c_source.html#l00113">113</a>行定义。</p>

</div>
</div>
</div>
<!--- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>数据结构</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>宏定义</a></div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<hr class="footer"/><address class="footer"><small>Generated at 2015年七月16日 星期四 12:00:41 for Navo Portable Library by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.3 </small></address>
</body>
</html>
